12 #ifndef SST_CORE_RNG_XORSHIFT_H
13 #define SST_CORE_RNG_XORSHIFT_H
22 #define XORSHIFT_UINT32_MAX 4294967295U
23 #define XORSHIFT_UINT64_MAX 18446744073709551615ULL
24 #define XORSHIFT_INT32_MAX 2147483647L
25 #define XORSHIFT_INT64_MAX 9223372036854775807LL
82 void seed(uint64_t newSeed);
99 #endif // SST_CORE_RNG_XORSHIFT_H
Implements the base class for random number generators for the SST core.
Definition: rng.h:27
int32_t generateNextInt32() override
Generates the next random number as a signed 32-bit integer.
Definition: xorshift.cc:116
XORShiftRNG()
Creates a new Mersenne using a random seed which is obtained from the system clock.
Definition: xorshift.cc:29
void seed(uint64_t newSeed)
Seed the XOR RNG.
Definition: xorshift.cc:132
uint64_t generateNextUInt64() override
Generates the next random number as an unsigned 64-bit integer.
Definition: xorshift.cc:78
~XORShiftRNG()
Destructor for Mersenne.
Definition: xorshift.cc:140
Implements a lightweight RNG based on XOR-shift operations.
Definition: xorshift.h:37
int64_t generateNextInt64() override
Generates the next random number as a signed 64-bit integer.
Definition: xorshift.cc:94
double nextUniform() override
Generates the next random number as a double value between 0 and 1.
Definition: xorshift.cc:56
uint32_t generateNextUInt32() override
Generates the next random number as an unsigned 32-bit integer.
Definition: xorshift.cc:68