SST 12.1.0
Structural Simulation Toolkit

Implements a random number generator using the Marsaglia method. More...
#include "sst/core/rng/marsaglia.h"
Public Member Functions  
MarsagliaRNG (unsigned int initial_z, unsigned int initial_w)  
Creates a new Marsaglia RNG using the initial seeds. More...  
MarsagliaRNG ()  
Creates a new Marsaglia RNG using random initial seeds (which are read from the system clock). More...  
void  restart (unsigned int new_z, unsigned int new_w) 
Restart the random number generator with new seeds. More...  
double  nextUniform () override 
Generates the next random number as a double in the range 0 to 1. More...  
uint32_t  generateNextUInt32 () override 
Generates the next random number as an unsigned 32bit integer. More...  
uint64_t  generateNextUInt64 () override 
Generates the next random number as an unsigned 64bit integer. More...  
int64_t  generateNextInt64 () override 
Generates the next number as a signed 64bit integer. More...  
int32_t  generateNextInt32 () override 
Generates the next number as a signed 32bit integer. More...  
void  seed (uint64_t newSeed) 
Seed the XOR RNG.  
Public Member Functions inherited from SST::RNG::Random  
virtual double  nextUniform ()=0 
Generates the next random number in the range [0,1). More...  
virtual uint32_t  generateNextUInt32 ()=0 
Generates the next random number as an unsigned 32bit integer. More...  
virtual uint64_t  generateNextUInt64 ()=0 
Generates the next random number as an unsigned 64bit integer. More...  
virtual int64_t  generateNextInt64 ()=0 
Generates the next random number as a signed 64bit integer. More...  
virtual int32_t  generateNextInt32 ()=0 
Generates the next random number as a signed 32bit integer. More...  
virtual  ~Random () 
Destroys the random number generator.  
Implements a random number generator using the Marsaglia method.
This method is computationally cheap and provides a reasonable distribution of random numbers. If you need additional strength in the random numbers you may want to consider the Mersenne RNG.
For more information see the Multiplywithcarry Random Number Generator article
at Wikipedia (http://en.wikipedia.org/wiki/Multiplywithcarry).
MarsagliaRNG::MarsagliaRNG  (  unsigned int  initial_z, 
unsigned int  initial_w  
) 
Creates a new Marsaglia RNG using the initial seeds.
[in]  initial_z  One of the random seed pairs 
[in]  initial_w  One of the random seed pairs. 
MarsagliaRNG::MarsagliaRNG  (  ) 
Creates a new Marsaglia RNG using random initial seeds (which are read from the system clock).
Note that these will create variation between runs and between platforms.

overridevirtual 
Generates the next number as a signed 32bit integer.
Implements SST::RNG::Random.
Referenced by generateNextInt64(), and generateNextUInt32().

overridevirtual 
Generates the next number as a signed 64bit integer.
Implements SST::RNG::Random.
References generateNextInt32().
Referenced by generateNextUInt64().

overridevirtual 
Generates the next random number as an unsigned 32bit integer.
Implements SST::RNG::Random.
References generateNextInt32().

overridevirtual 
Generates the next random number as an unsigned 64bit integer.
Implements SST::RNG::Random.
References generateNextInt64().

overridevirtual 
Generates the next random number as a double in the range 0 to 1.
Implements SST::RNG::Random.
void MarsagliaRNG::restart  (  unsigned int  new_z, 
unsigned int  new_w  
) 
Restart the random number generator with new seeds.
[in]  new_z  A new Zseed 
[in]  new_w  A new Wseed 