173 Table[index] = random;
237 0x0baa96887, 0x01e17d32c, 0x003bcdc3c, 0x00f33d1b2,
238 0x076a6491d, 0x0c570d85d, 0x0e382b1e3, 0x078db4362,
239 0x07439a9d4, 0x09cea8ac5, 0x089537c5c, 0x02588f55d,
240 0x0415b5e1d, 0x0216e3d95, 0x085c662e7, 0x05e8ab368,
241 0x03ea5cc8c, 0x0d26a0f74, 0x0f3a9222b, 0x048aad7e4
245 0x04b0f3b58, 0x0e874f0c3, 0x06955c5a6, 0x055a7ca46,
246 0x04d9a9d86, 0x0fe28a195, 0x0b1ca7865, 0x06b235751,
247 0x09a997a61, 0x0aa6e95c8, 0x0aaa98ee1, 0x05af9154c,
248 0x0fc8e2263, 0x0390f5e8c, 0x058ffd802, 0x0ac0a5eba,
249 0x0ac4874f6, 0x0a9df0913, 0x086be4c74, 0x0ed2c123b
302 int hiword =
Index++;
303 for (
int i = 0; i < 4; i++) {
305 int temp = hihold ^
Mix1[i];
306 int itmpl = temp & 0xffff;
307 int itmph = temp >> 16;
308 temp = itmpl * itmpl + ~(itmph * itmph);
309 temp = (temp >> 16) | (temp << 16);
310 hiword = loword ^ ((temp ^
Mix2[i]) + itmpl * itmph);
345#define MATRIX_A 0x9908b0df
346#define UPPER_MASK 0x80000000
347#define LOWER_MASK 0x7fffffff
350#define TEMPERING_MASK_B 0x9d2c5680
351#define TEMPERING_MASK_C 0xefc60000
352#define TEMPERING_SHIFT_U(y) (y >> 11)
353#define TEMPERING_SHIFT_S(y) (y << 7)
354#define TEMPERING_SHIFT_T(y) (y << 15)
355#define TEMPERING_SHIFT_L(y) (y >> 18)
363 if (!seed) seed=4375;
365 mt[0]= seed & 0xffffffff;
374 static unsigned int mag01[2]={0x0,
MATRIX_A};
380 for (kk=0;kk<
N-
M;kk++) {
382 mt[kk] =
mt[kk+
M] ^ (y >> 1) ^ mag01[y & 0x1];
386 mt[kk] =
mt[kk+(
M-
N)] ^ (y >> 1) ^ mag01[y & 0x1];
389 mt[
N-1] =
mt[
M-1] ^ (y >> 1) ^ mag01[y & 0x1];
413 unsigned int *y=(
unsigned int *) &x;
415 return (*y)*2.3283064370807973754314699618685e-10f;
int Pick_Random_Number(T &generator, int minval, int maxval)
Random2Class(unsigned seed=0)
Random3Class(unsigned seed1=0, unsigned seed2=0)
Random4Class(unsigned int seed=4357)
RandomClass(unsigned seed=0)
#define TEMPERING_SHIFT_T(y)
#define TEMPERING_SHIFT_L(y)
#define TEMPERING_SHIFT_U(y)
#define TEMPERING_SHIFT_S(y)