110 void seed(
unsigned long);
115 void seed(
const unsigned long*,
int size);
125 template <
class Archive>
126 void serialize(Archive& ar,
const unsigned int version);
130 unsigned long rand_int32();
134 static const int n = 624, m = 397;
140 unsigned long state[n];
149 unsigned long twiddle(
unsigned long,
unsigned long);
159 unsigned long MTRand_int32::twiddle(
unsigned long u,
unsigned long v)
161 return (((u & 0x80000000UL) | (v & 0x7FFFFFFFUL)) >> 1)
162 ^ ((v & 1UL) ? 0x9908B0DFUL : 0x0UL);
168 inline unsigned long MTRand_int32::rand_int32()
170 if (p == n) gen_state();
174 unsigned long x = state[p++];
176 x ^= (x << 7) & 0x9D2C5680UL;
177 x ^= (x << 15) & 0xEFC60000UL;
178 return x ^ (x >> 18);
184 template <
class Archive>
187 for (
int i=0; i < n; ++i) {
217 {
return static_cast<double>(rand_int32()) * (1. / 4294967296.); }
250 return static_cast<double>(rand_int32()) * (1. / 4294967295.); }
284 return (static_cast<double>(rand_int32()) + .5)*(1./4294967296.);
308 MTRand53(
const unsigned long* seed,
int size)
315 return (static_cast<double>(rand_int32() >> 5) * 67108864. +
316 static_cast<double>(rand_int32() >> 6)) * (1. / 9007199254740992.);
void operator=(const MTRand_int32 &)
Assignment.
virtual ~MTRand_int32()
Destructor.
void serialize(Archive &ar, const unsigned int version)
Serialize to/from an archive.
Generates double floating point numbers in the closed interval [0, 1].
Generates double floating point numbers in the open interval (0, 1).
unsigned long operator()()
Overload operator() to make this a generator (functor)
Generates double floating point numbers in the half-open interval [0, 1)
void seed(unsigned long)
Seed with 32 bit integer.
Mersenne Twister random number generator engine.
MTRand_int32()
Default constructor.
Utility classes for scientific computation.
generates 53 bit resolution doubles in the half-open interval [0, 1)