SST 12.1.0
Structural Simulation Toolkit
SST::RNG::MersenneRNG Class Reference

Implements a Mersenne-based RNG for use in the SST core or components. More...

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

Inheritance diagram for SST::RNG::MersenneRNG:
SST::RNG::Random

Public Member Functions

 MersenneRNG (unsigned int seed)
 Create a new Mersenne RNG with a specified seed. More...
 
 MersenneRNG ()
 Creates a new Mersenne using a random seed which is obtained from the system clock. More...
 
double nextUniform () override
 Generates the next random number as a double value between 0 and 1. More...
 
uint32_t generateNextUInt32 () override
 Generates the next random number as an unsigned 32-bit integer. More...
 
uint64_t generateNextUInt64 () override
 Generates the next random number as an unsigned 64-bit integer. More...
 
int64_t generateNextInt64 () override
 Generates the next random number as a signed 64-bit integer. More...
 
int32_t generateNextInt32 () override
 Generates the next random number as a signed 32-bit integer. More...
 
void seed (uint64_t newSeed)
 Seed the XOR RNG.
 
 ~MersenneRNG ()
 Destructor for Mersenne.
 
- Public Member Functions inherited from SST::RNG::Random
virtual double nextUniform ()=0
 Generates the next random number in the range [0,1). More...
 
virtual uint32_t generateNextUInt32 ()=0
 Generates the next random number as an unsigned 32-bit integer. More...
 
virtual uint64_t generateNextUInt64 ()=0
 Generates the next random number as an unsigned 64-bit integer. More...
 
virtual int64_t generateNextInt64 ()=0
 Generates the next random number as a signed 64-bit integer. More...
 
virtual int32_t generateNextInt32 ()=0
 Generates the next random number as a signed 32-bit integer. More...
 
virtual ~Random ()
 Destroys the random number generator.
 

Detailed Description

Implements a Mersenne-based RNG for use in the SST core or components.

The Mersenne RNG provides a better "randomness" to the distribution of outputs but is computationally more expensive than the Marsaglia RNG.

Constructor & Destructor Documentation

◆ MersenneRNG() [1/2]

MersenneRNG::MersenneRNG ( unsigned int  seed)

Create a new Mersenne RNG with a specified seed.

Parameters
[in]seedThe seed for this RNG

References seed().

◆ MersenneRNG() [2/2]

MersenneRNG::MersenneRNG ( )

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

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

Member Function Documentation

◆ generateNextInt32()

int32_t MersenneRNG::generateNextInt32 ( )
overridevirtual

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

Implements SST::RNG::Random.

References generateNextUInt32().

◆ generateNextInt64()

int64_t MersenneRNG::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 MersenneRNG::generateNextUInt32 ( )
overridevirtual

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

Implements SST::RNG::Random.

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

◆ generateNextUInt64()

uint64_t MersenneRNG::generateNextUInt64 ( )
overridevirtual

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

Implements SST::RNG::Random.

References generateNextInt64().

◆ nextUniform()

double MersenneRNG::nextUniform ( )
overridevirtual

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

Implements SST::RNG::Random.

References generateNextUInt32().


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