12#ifndef SST_CORE_RNG_XORSHIFT_H
13#define SST_CORE_RNG_XORSHIFT_H
21#define XORSHIFT_UINT32_MAX 4294967295U
22#define XORSHIFT_UINT64_MAX 18446744073709551615ULL
23#define XORSHIFT_INT32_MAX 2147483647L
24#define XORSHIFT_INT64_MAX 9223372036854775807LL
80 void seed(uint64_t newSeed);
This class is basically a wrapper for objects to declare the order in which their members should be s...
Definition serializer.h:43
Implements the base class for random number generators for the SST core.
Definition rng.h:30
Implements a lightweight RNG based on XOR-shift operations.
Definition xorshift.h:36
XORShiftRNG()
Creates a new Xorshift using a random seed which is obtained from the system clock.
Definition xorshift.cc:29
uint32_t generateNextUInt32() override
Generates the next random number as an unsigned 32-bit integer.
Definition xorshift.cc:70
double nextUniform() override
Generates the next random number as a double value between 0 and 1.
Definition xorshift.cc:58
uint64_t generateNextUInt64() override
Generates the next random number as an unsigned 64-bit integer.
Definition xorshift.cc:80
void serialize_order(SST::Core::Serialization::serializer &ser) override
Serialization function for checkpoint.
Definition xorshift.cc:143
int32_t generateNextInt32() override
Generates the next random number as a signed 32-bit integer.
Definition xorshift.cc:118
~XORShiftRNG()=default
Destructor for Xorshift.
XORShiftRNG(unsigned int seed)
Create a new Xorshift RNG with a specified seed.
Definition xorshift.cc:44
ImplementSerializable(SST::RNG::XORShiftRNG) protected uint32_t y
Serialization macro.
Definition xorshift.h:95
void seed(uint64_t newSeed)
Seed the XOR RNG.
Definition xorshift.cc:134
int64_t generateNextInt64() override
Generates the next random number as a signed 64-bit integer.
Definition xorshift.cc:96