G:/ScriptBasic/source/tools/mt19937.c File Reference

#include <stdio.h>

Go to the source code of this file.

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)


Define Documentation

#define LOWER_MASK   0x7fffffff
 

#define M   397
 

#define MATRIX_A   0x9908b0df
 

#define N   624
 

#define TEMPERING_MASK_B   0x9d2c5680
 

#define TEMPERING_MASK_C   0xefc60000
 

#define TEMPERING_SHIFT_L y   )     (y >> 18)
 

#define TEMPERING_SHIFT_S y   )     (y << 7)
 

#define TEMPERING_SHIFT_T y   )     (y << 15)
 

#define TEMPERING_SHIFT_U y   )     (y >> 11)
 

#define UPPER_MASK   0x80000000
 


Function Documentation

for  ) 
 

Definition at line 87 of file mt19937.c.

main  ) 
 

Definition at line 108 of file mt19937.c.

References j, and printf().

return (double) y/(unsigned long)  0xffffffff  ) 
 


Variable Documentation

<!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]
 

Definition at line 85 of file mt19937.c.

mt[N-1] = mt[M-1] ^ (y >> 1) ^ mag01[y & 0x1]
 

Definition at line 92 of file mt19937.c.

mti = 0
 

Definition at line 94 of file mt19937.c.

y = TEMPERING_SHIFT_L(y)
 

Definition at line 101 of file mt19937.c.

y = TEMPERING_SHIFT_T(y) & TEMPERING_MASK_C
 

Definition at line 100 of file mt19937.c.

y = TEMPERING_SHIFT_S(y) & TEMPERING_MASK_B
 

Definition at line 99 of file mt19937.c.

y = TEMPERING_SHIFT_U(y)
 

Definition at line 98 of file mt19937.c.

y = mt[mti++]
 

Definition at line 97 of file mt19937.c.

y = (mt[N-1]&UPPER_MASK)|(mt[0]&LOWER_MASK)
 

Definition at line 91 of file mt19937.c.


Generated on Sun Mar 12 23:56:38 2006 for ScriptBasic by  doxygen 1.4.6-NO