/* Copyright (c) 2001, Stanford University
* All rights reserved
*
* See the file LICENSE.txt for information on redistributing this software.
*/
#include "cr_rand.h"
#ifdef WINDOWS
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#else
#endif
/* Period parameters */
#define N 624
#define M 397
/* Tempering parameters */
{
/* setting initial seeds to mt[N] using the generator Line 25 of Table 1
in [KNUTH 1981, The Art of Computer Programming Vol. 2 (2nd Ed.),
pp102
*/
if (seed == 0)
}
/*
* Seed the generator based on time of day or a system counter.
*/
void crRandAutoSeed(void)
{
#if defined(WINDOWS)
#else
gettimeofday( &timeofday, 0 );
#endif
}
static double genrand( void )
{
unsigned long y;
/* mag01[x] = x * MATRIX_A for x=0,1 */
if (mti >= N) { /* generate N words at one time */
int kk;
}
}
mti = 0;
}
y ^= TEMPERING_SHIFT_U(y);
y ^= TEMPERING_SHIFT_S(y) & TEMPERING_MASK_B;
y ^= TEMPERING_SHIFT_T(y) & TEMPERING_MASK_C;
y ^= TEMPERING_SHIFT_L(y);
return ( (double)y / (unsigned long)0xffffffff ); /* reals */
/* return y; */ /* for integer generation */
}
{
double t = genrand();
}
/* return a random integer in [min, max] (inclusive). */
{
double t = genrand();
}