30 read<SeedType>(in,
"seed", seed_);
39 loadParameter<SeedType>(ar,
"seed", seed_);
57 void Random::setSeed(Random::SeedType seed)
67 void Random::setSeed()
74 gettimeofday(&time, NULL);
75 temp = time.tv_sec + 1123*time.tv_usec;
77 if (MPI::Is_initialized()) {
78 SeedType rank = MPI::COMM_WORLD.Get_rank();
79 temp += rank*(31 + time.tv_usec);
86 isInitialized_ =
true;
94 static bool iset =
false;
95 static double zGauss1;
108 double fac = sqrt(-2.0*log(rsq)/rsq);
124 double ran1=0, ran2=0, ranh;
128 while (ransq >= 1.0) {
129 ran1 = 1.0-2.0*
uniform(0.0, 1.0);
130 ran2 = 1.0-2.0*
uniform(0.0, 1.0);
131 ransq = ran1*ran1 + ran2*ran2;
133 ranh= 2.0*sqrt(1.0-ransq);
136 v[2] = 1.0 - 2.0*ransq;
Saving archive for binary istream.
Saving / output archive for binary ostream.
void setClassName(const char *className)
Set class name string.
void setSeed(SeedType seed)
Sets of random seed, and initializes random number generator.
virtual void readParameters(std::istream &in)
Read seed from file, initialize RNG.
virtual void loadParameters(Serializable::IArchive &ar)
Load internal state from file.
virtual ~Random()
Destructor.
void unitVector(Vector &v)
Generate unit vector with uniform probability over the unit sphere.
double uniform()
Return a random floating point number x, uniformly distributed in the range 0 <= x < 1.
double gaussian(void)
Return a Gaussian random number with zero average and unit variance.
long seed()
Returns value of random seed (private member variable seed_).
virtual void save(Serializable::OArchive &ar)
Save internal state to file.
A Vector is a Cartesian vector.
Utility classes for scientific computation.