src/core/rng-stream.h
changeset 346 4a76f247e7dc
child 360 7bffd987426c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/core/rng-stream.h	Sat Mar 17 22:32:08 2007 -0700
@@ -0,0 +1,60 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+//
+//  Copyright (C) 2001  Pierre L'Ecuyer (lecuyer@iro.umontreal.ca)
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 2 as
+// published by the Free Software Foundation;
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+//
+// Modified for ns-3 by: Rajib Bhattacharjea<raj.b@gatech.edu>
+
+#ifndef RNGSTREAM_H
+#define RNGSTREAM_H
+#include <string>
+
+namespace ns3{
+
+/**
+ * \brief RngStream by Pierre L'Ecuyer, University of Montreal
+ * Adapted to NS3 by Rajib Bhattacharjea, Georgia Tech.
+ */
+class RngStream {
+public:  //public api
+  RngStream ();
+  void InitializeStream(); // Separate initialization
+  void ResetStartStream ();
+  void ResetStartSubstream ();
+  void ResetNextSubstream ();
+  void SetAntithetic (bool a);
+  void IncreasedPrecis (bool incp);
+  bool SetSeeds (const uint32_t seed[6]);
+  void AdvanceState (int32_t e, int32_t c);
+  void GetState (uint32_t seed[6]) const;
+  double RandU01 ();
+  int32_t RandInt (int32_t i, int32_t j);
+public: //public static api
+  static bool SetPackageSeed (const uint32_t seed[6]);
+  static bool CheckSeed(const uint32_t seed[6]);
+private: //members
+  double Cg[6], Bg[6], Ig[6];
+  bool anti, incPrec;
+  double U01 ();
+  double U01d ();
+private: //static data
+  static double nextSeed[6];
+};
+
+};//namespace ns3
+
+#endif
+ 
+