12#ifndef SST_CORE_RNG_MARSAGLIA_H
13#define SST_CORE_RNG_MARSAGLIA_H
15#include "sst/core/sst_types.h"
22#define MARSAGLIA_UINT32_MAX 4294967295U
23#define MARSAGLIA_UINT64_MAX 18446744073709551615ULL
24#define MARSAGLIA_INT32_MAX 2147483647L
25#define MARSAGLIA_INT64_MAX 9223372036854775807LL
48 MarsagliaRNG(
unsigned int initial_z,
unsigned int initial_w);
62 void restart(
unsigned int new_z,
unsigned int new_w);
92 void seed(uint64_t newSeed);
108 unsigned int generateNext();
This class is basically a wrapper for objects to declare the order in which their members should be s...
Definition serializer.h:45
Implements a random number generator using the Marsaglia method.
Definition marsaglia.h:40
void seed(uint64_t newSeed)
Seed the XOR RNG.
Definition marsaglia.cc:144
unsigned int m_w
The W seed of the Marsaglia generator.
Definition marsaglia.h:118
int32_t generateNextInt32() override
Generates the next number as a signed 32-bit integer.
Definition marsaglia.cc:128
void restart(unsigned int new_z, unsigned int new_w)
Restart the random number generator with new seeds.
Definition marsaglia.cc:54
void serialize_order(SST::Core::Serialization::serializer &ser) override
Serialization function for checkpoint.
Definition marsaglia.cc:167
ImplementSerializable(SST::RNG::MarsagliaRNG) private unsigned int m_z
Serialization macro.
Definition marsaglia.h:102
uint32_t generateNextUInt32() override
Generates the next random number as an unsigned 32-bit integer.
Definition marsaglia.cc:151
MarsagliaRNG(unsigned int initial_z, unsigned int initial_w)
Creates a new Marsaglia RNG using the initial seeds.
Definition marsaglia.cc:29
MarsagliaRNG()
Creates a new Marsaglia RNG using random initial seeds (which are read from the system clock).
Definition marsaglia.cc:40
uint64_t generateNextUInt64() override
Generates the next random number as an unsigned 64-bit integer.
Definition marsaglia.cc:90
int64_t generateNextInt64() override
Generates the next number as a signed 64-bit integer.
Definition marsaglia.cc:106
double nextUniform() override
Generates the next random number as a double in the range 0 to 1.
Definition marsaglia.cc:78
Implements the base class for random number generators for the SST core.
Definition rng.h:29