#include <mt19937.h>
Inheritance diagram for NUM::RandomNumberGenerator_MersenneTwister19937:
Public Member Functions | |
RandomNumberGenerator_MersenneTwister19937 (uint32 s) | |
Initialize PRNG with passed seed value. See seed(). | |
RandomNumberGenerator_MersenneTwister19937 (const uint32 *init_key, int nelem) | |
Initialize PRNG with passed seed array (nelem elements). See seed(). | |
~RandomNumberGenerator_MersenneTwister19937 () | |
Destructor. | |
void | seed (uint32 seed) |
Re-initialize ("seed") the PRNG with seed value. | |
void | seed (const uint32 *init_key, int nelem) |
Re-initialize ("seed") the PRNG with seed array (nelem elements). | |
uint32 | rand_uint32 () |
Generates a random number on [0,0xffffffff]-interval. | |
int32 | rand_int32 () |
Generates a random number on [0,0x7fffffff]-interval. | |
dbl | rand_dbl32o () |
Generates a "32-bit" random number on [0,1)-real-interval. | |
dbl | rand_dbl32 () |
Generates a "32-bit" random number on [0,1]-real-interval. | |
dbl | rand_dbl53o () |
Generates a "53-bit" random number on [0,1)-real-interval. | |
dbl | rand_dbl53 () |
Generates a "53-bit" random number on [0,1]-real-interval. | |
Static Public Attributes | |
const int | N = 624 |
const int | M = 397 |
const uint32 | MATRIX_A = 0x9908b0dfU |
const uint32 | UMASK = 0x80000000U |
const uint32 | LMASK = 0x7fffffffU |
Private Member Functions | |
uint32 | MIXBITS (uint32 u, uint32 v) |
uint32 | TWIST (uint32 u, uint32 v) |
void | next_state () |
uint32 | _rand32 () |
Main "raw" random number generator; internally used. | |
RandomNumberGenerator_MersenneTwister19937 (const RandomNumberGenerator_MersenneTwister19937 &) | |
Do not use. | |
void | operator= (const RandomNumberGenerator_MersenneTwister19937 &) |
Do not use. | |
Private Attributes | |
uint32 | state [N] |
uint32 * | next |
int | left |
This is a Mersenne Twister pseudorandom number generator with period 2^19937-1 with improved initialization scheme, modified on 2002/2/10 by Takuji Nishimura and Makoto Matsumoto. This is a faster version by taking Shawn Cokus's optimization, Matthe Bellew's simplification, Isaku Wada's real version.
See: URL http://www.math.keio.ac.jp/matumoto/emt.html
This generator is not cryptoraphically secure.
For more legal text, see the comment in the source of the implementation file mt19937.cc.
Reference
M. Matsumoto and T. Nishimura, "Mersenne Twister: A 623-Dimensionally Equidistributed Uniform Pseudo-Random Number Generator", ACM Transactions on Modeling and Computer Simulation, Vol. 8, No. 1, January 1998, pp 3--30.
Class is not "C++-safe"; please use the RandomNumberGenerator class.
Definition at line 73 of file mt19937.h.
|
Do not use.
|
|
Initialize PRNG with passed seed value. See seed().
|
|
Initialize PRNG with passed seed array (nelem elements). See seed().
|
|
Destructor.
|
|
Main "raw" random number generator; internally used.
Definition at line 96 of file mt19937.h. References left, next, next_state(), uint32, and NUM::y. Referenced by rand_dbl32(), rand_dbl32o(), rand_dbl53(), rand_dbl53o(), rand_int32(), and rand_uint32(). |
|
Definition at line 88 of file mt19937.h. References LMASK, uint32, and UMASK. Referenced by TWIST(). |
|
Definition at line 124 of file mt19937.cc. References left, M, N, next, state, TWIST(), and uint32. Referenced by _rand32(). |
|
Do not use.
|
|
Generates a "32-bit" random number on [0,1]-real-interval.
Reimplemented from NUM::RandomNumberGenerator_Base. |
|
Generates a "32-bit" random number on [0,1)-real-interval.
Reimplemented from NUM::RandomNumberGenerator_Base. |
|
Generates a "53-bit" random number on [0,1]-real-interval.
Reimplemented from NUM::RandomNumberGenerator_Base. |
|
Generates a "53-bit" random number on [0,1)-real-interval.
Reimplemented from NUM::RandomNumberGenerator_Base. |
|
Generates a random number on [0,0x7fffffff]-interval.
Reimplemented from NUM::RandomNumberGenerator_Base. |
|
Generates a random number on [0,0xffffffff]-interval.
Reimplemented from NUM::RandomNumberGenerator_Base. |
|
Re-initialize ("seed") the PRNG with seed array (nelem elements). Initializes the state vector by using an array init_key[] of unsigned 32-bit integers of length nelem. If nelem is smaller than N (=624), then each array of 32-bit integers gives distinct initial state vector. This is useful if you want a larger seed space than 32-bit word. Definition at line 87 of file mt19937.cc. |
|
Re-initialize ("seed") the PRNG with seed value. Initializes the state vector by using one unsigned 32-bit integer "seed", which may be zero. Reimplemented from NUM::RandomNumberGenerator_Base. Definition at line 67 of file mt19937.cc. References left, N, state, and uint32. Referenced by RandomNumberGenerator_MersenneTwister19937(), and seed(). |
|
Definition at line 90 of file mt19937.h. References MATRIX_A, MIXBITS(), and uint32. Referenced by next_state(). |
|
Definition at line 86 of file mt19937.h. Referenced by _rand32(), next_state(), and seed(). |
|
Definition at line 81 of file mt19937.h. Referenced by MIXBITS(). |
|
Definition at line 78 of file mt19937.h. Referenced by next_state(). |
|
Definition at line 79 of file mt19937.h. Referenced by TWIST(). |
|
Definition at line 77 of file mt19937.h. Referenced by next_state(), and seed(). |
|
Definition at line 85 of file mt19937.h. Referenced by _rand32(), and next_state(). |
|
Definition at line 84 of file mt19937.h. Referenced by next_state(), and seed(). |
|
Definition at line 80 of file mt19937.h. Referenced by MIXBITS(). |