SST 15.0
Structural Simulation Toolkit
SST::RNG::XORShiftRNG Class Reference

Implements a lightweight RNG based on XOR-shift operations. More...

#include "sst/core/rng/xorshift.h"

Inheritance diagram for SST::RNG::XORShiftRNG:
SST::RNG::Random SST::Core::Serialization::serializable SST::Core::Serialization::serializable_base

Public Member Functions

 XORShiftRNG (unsigned int seed)
 Create a new Xorshift RNG with a specified seed.
 
 XORShiftRNG ()
 Creates a new Xorshift using a random seed which is obtained from the system clock.
 
double nextUniform () override
 Generates the next random number as a double value between 0 and 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 random number as a signed 64-bit integer.
 
int32_t generateNextInt32 () override
 Generates the next random number as a signed 32-bit integer.
 
void seed (uint64_t newSeed)
 Seed the XOR RNG.
 
 ~XORShiftRNG ()
 Destructor for Xorshift.
 
void serialize_order (SST::Core::Serialization::serializer &ser) override
 Serialization function for checkpoint.
 
- Public Member Functions inherited from SST::RNG::Random
virtual ~Random ()
 Destroys the random number generator.
 
virtual void serialize_order (SST::Core::Serialization::serializer &UNUSED(ser)) override
 
- Public Member Functions inherited from SST::Core::Serialization::serializable_base
virtual const char * cls_name () const =0
 
virtual uint32_t cls_id () const =0
 
virtual std::string serialization_name () const =0
 

Data Fields

ImplementSerializable(SST::RNG::XORShiftRNG) protected uint32_t y
 Serialization macro.
 
uint32_t z
 
uint32_t w
 

Additional Inherited Members

- Static Public Attributes inherited from SST::Core::Serialization::serializable
static constexpr uint32_t NullClsId = std::numeric_limits<uint32_t>::max()
 
- Static Public Attributes inherited from SST::Core::Serialization::serializable_base
static constexpr uint32_t NullClsId = std::numeric_limits<uint32_t>::max()
 
- Protected Types inherited from SST::Core::Serialization::serializable_base
enum  cxn_flag_t { ConstructorFlag }
 
- Static Protected Member Functions inherited from SST::Core::Serialization::serializable_base
static void serializable_abort (uint32_t line, const char *file, const char *func, const char *obj)
 

Detailed Description

Implements a lightweight RNG based on XOR-shift operations.

We utilize the XORSHIFT algorithm from: http://en.wikipedia.org/wiki/Xorshift. This is a very lightweight and inexpensive RNG.

Constructor & Destructor Documentation

◆ XORShiftRNG() [1/2]

XORShiftRNG::XORShiftRNG ( unsigned int seed)
explicit

Create a new Xorshift RNG with a specified seed.

Parameters
[in]seedThe seed for this RNG

References seed().

◆ XORShiftRNG() [2/2]

XORShiftRNG::XORShiftRNG ( )

Creates a new Xorshift using a random seed which is obtained from the system clock.

Note this will give different results on different platforms and between runs.

References y.

Member Function Documentation

◆ generateNextInt32()

int32_t XORShiftRNG::generateNextInt32 ( )
overridevirtual

Generates the next random number as a signed 32-bit integer.

Implements SST::RNG::Random.

References generateNextUInt32().

◆ generateNextInt64()

int64_t XORShiftRNG::generateNextInt64 ( )
overridevirtual

Generates the next random number as a signed 64-bit integer.

Implements SST::RNG::Random.

References generateNextUInt32().

Referenced by generateNextUInt64().

◆ generateNextUInt32()

uint32_t XORShiftRNG::generateNextUInt32 ( )
overridevirtual

Generates the next random number as an unsigned 32-bit integer.

Implements SST::RNG::Random.

References y.

Referenced by generateNextInt32(), generateNextInt64(), and nextUniform().

◆ generateNextUInt64()

uint64_t XORShiftRNG::generateNextUInt64 ( )
overridevirtual

Generates the next random number as an unsigned 64-bit integer.

Implements SST::RNG::Random.

References generateNextInt64().

◆ nextUniform()

double XORShiftRNG::nextUniform ( )
overridevirtual

Generates the next random number as a double value between 0 and 1.

Implements SST::RNG::Random.

References generateNextUInt32().

◆ serialize_order()

void XORShiftRNG::serialize_order ( SST::Core::Serialization::serializer & ser)
overridevirtual

Serialization function for checkpoint.

Implements SST::Core::Serialization::serializable_base.

References y.


The documentation for this class was generated from the following files: