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;
A Vector is a Cartesian vector.
virtual ~Random()
Destructor.
double uniform()
Return a random floating point number x, uniformly distributed in the range 0 <= x < 1...
virtual void loadParameters(Serializable::IArchive &ar)
Load internal state from file.
Saving / output archive for binary ostream.
virtual void readParameters(std::istream &in)
Read seed from file, initialize RNG.
virtual void save(Serializable::OArchive &ar)
Save internal state to file.
Utility classes for scientific computation.
double gaussian(void)
Return a Gaussian random number with zero average and unit variance.
void setSeed(SeedType seed)
Sets of random seed, and initializes random number generator.
long seed()
Returns value of random seed (private member variable seed_).
Saving archive for binary istream.
void setClassName(const char *className)
Set class name string.
void unitVector(Vector &v)
Generate unit vector with uniform probability over the unit sphere.