|
SST
8.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 32-bit integer. | |
| uint64_t | generateNextUInt64 () override |
| Generates the next random number as an unsigned 64-bit integer. | |
| int64_t | generateNextInt64 () override |
| Generates the next number as a signed 64-bit integer. | |
| int32_t | generateNextInt32 () override |
| Generates the next number as a signed 32-bit 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 Multiply-with-carry Random Number Generator article at Wikipedia (http://en.wikipedia.org/wiki/Multiply-with-carry).
| 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 Z-seed |
| [in] | new_w | A new W-seed |