Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

NUM::RandomNumberGenerator_MersenneTwister19937 Class Reference

Fast Mersenne Twister pseudorandom number generator with period 2^19937-1. More...

#include <mt19937.h>

Inheritance diagram for NUM::RandomNumberGenerator_MersenneTwister19937:

Inheritance graph
[legend]
Collaboration diagram for NUM::RandomNumberGenerator_MersenneTwister19937:

Collaboration graph
[legend]
List of all members.

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]
uint32next
int left

Detailed Description

Fast Mersenne Twister pseudorandom number generator with period 2^19937-1.

Author:
Wolfgang Wieser ] wwieser (a) gmx <*> de [ ported the code originally developed by Takuji Nishimura (nisimura@sci.kj.yamagata-u.ac.jp) and Makoto Matsumoto (matumoto@math.keio.ac.jp) with modifications by Shawn Cokus, Matthe Bellew, Isaku Wada and Wolfgang Wieser.
This is a very fast PRNG.

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.


Constructor & Destructor Documentation

NUM::RandomNumberGenerator_MersenneTwister19937::RandomNumberGenerator_MersenneTwister19937 const RandomNumberGenerator_MersenneTwister19937  )  [private]
 

Do not use.

NUM::RandomNumberGenerator_MersenneTwister19937::RandomNumberGenerator_MersenneTwister19937 uint32  s  )  [inline]
 

Initialize PRNG with passed seed value. See seed().

Definition at line 115 of file mt19937.h.

References seed(), and uint32.

NUM::RandomNumberGenerator_MersenneTwister19937::RandomNumberGenerator_MersenneTwister19937 const uint32 init_key,
int  nelem
[inline]
 

Initialize PRNG with passed seed array (nelem elements). See seed().

Definition at line 119 of file mt19937.h.

References seed(), and uint32.

NUM::RandomNumberGenerator_MersenneTwister19937::~RandomNumberGenerator_MersenneTwister19937  )  [inline]
 

Destructor.

Definition at line 123 of file mt19937.h.


Member Function Documentation

uint32 NUM::RandomNumberGenerator_MersenneTwister19937::_rand32  )  [inline, private]
 

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().

uint32 NUM::RandomNumberGenerator_MersenneTwister19937::MIXBITS uint32  u,
uint32  v
[inline, private]
 

Definition at line 88 of file mt19937.h.

References LMASK, uint32, and UMASK.

Referenced by TWIST().

void NUM::RandomNumberGenerator_MersenneTwister19937::next_state  )  [private]
 

Definition at line 124 of file mt19937.cc.

References left, M, N, next, state, TWIST(), and uint32.

Referenced by _rand32().

void NUM::RandomNumberGenerator_MersenneTwister19937::operator= const RandomNumberGenerator_MersenneTwister19937  )  [private]
 

Do not use.

dbl NUM::RandomNumberGenerator_MersenneTwister19937::rand_dbl32  )  [inline, virtual]
 

Generates a "32-bit" random number on [0,1]-real-interval.

Reimplemented from NUM::RandomNumberGenerator_Base.

Definition at line 158 of file mt19937.h.

References _rand32(), and dbl.

dbl NUM::RandomNumberGenerator_MersenneTwister19937::rand_dbl32o  )  [inline, virtual]
 

Generates a "32-bit" random number on [0,1)-real-interval.

Reimplemented from NUM::RandomNumberGenerator_Base.

Definition at line 154 of file mt19937.h.

References _rand32(), and dbl.

dbl NUM::RandomNumberGenerator_MersenneTwister19937::rand_dbl53  )  [inline, virtual]
 

Generates a "53-bit" random number on [0,1]-real-interval.

Reimplemented from NUM::RandomNumberGenerator_Base.

Definition at line 169 of file mt19937.h.

References _rand32(), dbl, and uint32.

dbl NUM::RandomNumberGenerator_MersenneTwister19937::rand_dbl53o  )  [inline, virtual]
 

Generates a "53-bit" random number on [0,1)-real-interval.

Reimplemented from NUM::RandomNumberGenerator_Base.

Definition at line 162 of file mt19937.h.

References _rand32(), dbl, and uint32.

int32 NUM::RandomNumberGenerator_MersenneTwister19937::rand_int32  )  [inline, virtual]
 

Generates a random number on [0,0x7fffffff]-interval.

Reimplemented from NUM::RandomNumberGenerator_Base.

Definition at line 150 of file mt19937.h.

References _rand32(), and int32.

uint32 NUM::RandomNumberGenerator_MersenneTwister19937::rand_uint32  )  [inline, virtual]
 

Generates a random number on [0,0xffffffff]-interval.

Reimplemented from NUM::RandomNumberGenerator_Base.

Definition at line 146 of file mt19937.h.

References _rand32(), and uint32.

void NUM::RandomNumberGenerator_MersenneTwister19937::seed const uint32 init_key,
int  nelem
 

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.

References left, N, seed(), state, and uint32.

void NUM::RandomNumberGenerator_MersenneTwister19937::seed uint32  seed  )  [virtual]
 

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().

uint32 NUM::RandomNumberGenerator_MersenneTwister19937::TWIST uint32  u,
uint32  v
[inline, private]
 

Definition at line 90 of file mt19937.h.

References MATRIX_A, MIXBITS(), and uint32.

Referenced by next_state().


Member Data Documentation

int NUM::RandomNumberGenerator_MersenneTwister19937::left [private]
 

Definition at line 86 of file mt19937.h.

Referenced by _rand32(), next_state(), and seed().

const uint32 NUM::RandomNumberGenerator_MersenneTwister19937::LMASK = 0x7fffffffU [static]
 

Definition at line 81 of file mt19937.h.

Referenced by MIXBITS().

const int NUM::RandomNumberGenerator_MersenneTwister19937::M = 397 [static]
 

Definition at line 78 of file mt19937.h.

Referenced by next_state().

const uint32 NUM::RandomNumberGenerator_MersenneTwister19937::MATRIX_A = 0x9908b0dfU [static]
 

Definition at line 79 of file mt19937.h.

Referenced by TWIST().

const int NUM::RandomNumberGenerator_MersenneTwister19937::N = 624 [static]
 

Definition at line 77 of file mt19937.h.

Referenced by next_state(), and seed().

uint32* NUM::RandomNumberGenerator_MersenneTwister19937::next [private]
 

Definition at line 85 of file mt19937.h.

Referenced by _rand32(), and next_state().

uint32 NUM::RandomNumberGenerator_MersenneTwister19937::state[N] [private]
 

Definition at line 84 of file mt19937.h.

Referenced by next_state(), and seed().

const uint32 NUM::RandomNumberGenerator_MersenneTwister19937::UMASK = 0x80000000U [static]
 

Definition at line 80 of file mt19937.h.

Referenced by MIXBITS().


The documentation for this class was generated from the following files:
Generated on Sat Feb 19 22:36:02 2005 for Ray by doxygen 1.3.5