66 #define Cmt19937_M 397
67 #define Cmt19937_MATRIX_A 0x9908b0dfUL
68 #define Cmt19937_UMASK 0x80000000UL
69 #define Cmt19937_LMASK 0x7fffffffUL
70 #define Cmt19937_MIXBITS(u,v) \
71 (((u) & Cmt19937_UMASK) | ((v) & Cmt19937_LMASK))
72 #define Cmt19937_TWIST(u,v) \
73 ((Cmt19937_MIXBITS(u,v) >> 1) ^ ((v)&1UL ? Cmt19937_MATRIX_A : 0UL))
90 mState[0] = seed & 0xffffffffUL;
118 mState[i] &= 0xffffffffUL;
130 mState[i] &= 0xffffffffUL;
244 return mFloat = (a * 67108864.0 + b) * (1.0 / 9007199254740992.0);
256 return mFloat = (a * 67108864.0 + b) * (1.0 / 9007199254740991.0);
263 return mFloat = (a * 67108864.0 + b) * (1.0 / 9007199254740992.0);
270 return mFloat = (a * 67108864.0 + b + 0.5) * (1.0 / 9007199254740992.0);
279 unsigned C_INT32 init[4] = {0x123, 0x234, 0x345, 0x456}, length = 4;
280 init_by_array(init, length);
284 printf(
"1000 outputs of getRandomU()\n");
285 for (i = 0; i < 1000; i++)
287 printf(
"%10lu ", getRandomU());
291 printf(
"\n1000 outputs of genrand_real2()\n");
292 for (i = 0; i < 1000; i++)
294 printf(
"%10.8f ", getRandomCO());
Cmt19937HR(unsigned C_INT32 seed)
Cmt19937(unsigned C_INT32 seed)
int main(int argc, char **argv)
void initialize(unsigned C_INT32 seed=CRandom::getSystemSeed())
unsigned C_INT32 mState[624]
void init_by_array(unsigned C_INT32 init_key[], C_INT32 key_length)
#define Cmt19937_TWIST(u, v)
unsigned C_INT32 getRandomU()
void setModulus(const unsigned C_INT32 &modulus)
C_FLOAT64 genrand_res53()
unsigned C_INT32 mNumberU