SST
7.0.0
StructuralSimulationToolkit

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.  
uint32_t  generateNextUInt32 () override 
Generates the next random number as an unsigned 32bit integer.  
uint64_t  generateNextUInt64 () override 
Generates the next random number as an unsigned 64bit integer.  
int64_t  generateNextInt64 () override 
Generates the next number as a signed 64bit integer.  
int32_t  generateNextInt32 () override 
Generates the next number as a signed 32bit integer.  
void  seed (uint64_t newSeed) 
Seed the XOR RNG.  
Public Member Functions inherited from SST::RNG::SSTRandom  
virtual  ~SSTRandom () 
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.
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 