|
Defines |
#define | N 624 |
#define | M 397 |
#define | MATRIX_A 0x9908b0df |
#define | UPPER_MASK 0x80000000 |
#define | LOWER_MASK 0x7fffffff |
#define | TEMPERING_MASK_B 0x9d2c5680 |
#define | TEMPERING_MASK_C 0xefc60000 |
#define | TEMPERING_SHIFT_U(y) (y >> 11) |
#define | TEMPERING_SHIFT_S(y) (y << 7) |
#define | TEMPERING_SHIFT_T(y) (y << 15) |
#define | TEMPERING_SHIFT_L(y) (y >> 18) |
Functions |
| for (;kk< N-1;kk++) |
| return ((double) y/(unsigned long) 0xffffffff) |
| main () |
Variables |
<!DOCTYPEHTMLPUBLIC"-<!--savedfromurl=(0046)http:<HTML><HEAD><METAcontent="text/html;charset=windows-1250"http-equiv=Content-Type><
METAcontent="MSHTML5.00.3315.2870"name=GENERATOR></HEAD><BODY><
XMP>#defineN#defineM#defineMATRIX_A#defineUPPER_MASK#defineLOWER_MASK#defineTEMPERING_MASK_B#defineTEMPERING_MASK_C#defineTEMPERING_SHIFT_U(y)#defineTEMPERING_SHIFT_S(y)#defineTEMPERING_SHIFT_T(y)#defineTEMPERING_SHIFT_L(y)staticunsignedlongmt[N];staticintmti=N+1;voidsgenrand(seed)unsignedlongseed;{mt[0]=seed&0xffffffff;for(mti=1;mti<N;mti++)mt[mti]=(69069*mt | mag01 [mti-1])&0xffffffff;}doublegenrand(){unsignedlongy;staticunsignedlongmag01[2]={0x0, MATRIX_A};if(mti >=N){intkk;if(mti==N+1) sgenrand(4357);for(kk=0;kk< N-M;kk++){y=(mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);mt[kk]=mt[kk+M]^(y >>[y &0x1] |
| y = (mt[N-1]&UPPER_MASK)|(mt[0]&LOWER_MASK) |
| mt [N-1] = mt[M-1] ^ (y >> 1) ^ mag01[y & 0x1] |
| mti = 0 |
| y = mt[mti++] |
| 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) |