Plasma Engine  2.0
Loading...
Searching...
No Matches
plRandom Class Reference

A random number generator. Currently uses the WELL512 algorithm. More...

#include <Random.h>

Public Member Functions

void Initialize (plUInt64 uiSeed)
 Initializes the RNG with the given seed value. The value should not be zero.
 
void InitializeFromCurrentTime ()
 Initializes the RNG using current time stamp. Not very sophisticated, but good enough for things that do not need to be secure.
 
void Save (plStreamWriter &inout_stream) const
 Serializes the current state.
 
void Load (plStreamReader &inout_stream)
 Deserializes the current state.
 
plUInt32 UInt ()
 Returns a uint32 value, ie. ranging from 0 to (2 ^ 32) - 1.
 
plUInt32 UIntInRange (plUInt32 uiRange)
 Returns a uint32 value in range [0 ; uiRange - 1].
 
plInt32 IntInRange (plInt32 iMinValue, plUInt32 uiRange)
 Returns an int32 value in range [iMinValue ; iMinValue + uiRange - 1].
 
plInt32 IntMinMax (plInt32 iMinValue, plInt32 iMaxValue)
 Returns an int32 value in range [iMinValue ; iMaxValue].
 
PL_ALWAYS_INLINE bool Bool ()
 Returns a boolean either being true or false.
 
PL_ALWAYS_INLINE double DoubleZeroToOneExclusive ()
 Returns a value in range [0.0 ; 1.0), ie. including zero, but excluding one.
 
PL_ALWAYS_INLINE double DoubleZeroToOneInclusive ()
 Returns a value in range [0.0 ; 1.0], ie. including zero and one.
 
double DoubleInRange (double fMinValue, double fRange)
 Returns a double value in range [fMinValue ; fMinValue + fRange)
 
double DoubleMinMax (double fMinValue, double fMaxValue)
 Returns a double value in range [fMinValue ; fMaxValue].
 
double DoubleVariance (double fValue, double fVariance)
 Returns a double value around fValue with a given variance (0 - 1 range)
 
double DoubleVarianceAroundZero (double fAbsMaxValue)
 Returns a double value between [-fAbsMaxValue; +fAbsMaxValue] with a Gaussian distribution.
 
PL_ALWAYS_INLINE float FloatZeroToOneExclusive ()
 Returns a value in range [0.0 ; 1.0), ie. including zero, but excluding one.
 
PL_ALWAYS_INLINE float FloatZeroToOneInclusive ()
 Returns a value in range [0.0 ; 1.0], ie. including zero and one.
 
PL_ALWAYS_INLINE float FloatInRange (float fMinValue, float fRange)
 Returns a float value in range [fMinValue ; fMinValue + fRange)
 
PL_ALWAYS_INLINE float FloatMinMax (float fMinValue, float fMaxValue)
 Returns a float value in range [fMinValue ; fMaxValue].
 
PL_ALWAYS_INLINE float FloatVariance (float fValue, float fVariance)
 Returns a float value around fValue with a given variance (0 - 1 range)
 
PL_ALWAYS_INLINE float FloatVarianceAroundZero (float fAbsMaxValue)
 Returns a float value between [-fAbsMaxValue; +fAbsMaxValue] with a Gaussian distribution.
 

Detailed Description

A random number generator. Currently uses the WELL512 algorithm.

Member Function Documentation

◆ DoubleMinMax()

double plRandom::DoubleMinMax ( double fMinValue,
double fMaxValue )

Returns a double value in range [fMinValue ; fMaxValue].

Todo
Probably not correct

◆ DoubleVariance()

double plRandom::DoubleVariance ( double fValue,
double fVariance )

Returns a double value around fValue with a given variance (0 - 1 range)

Todo
Test whether this is actually correct

◆ DoubleVarianceAroundZero()

double plRandom::DoubleVarianceAroundZero ( double fAbsMaxValue)

Returns a double value between [-fAbsMaxValue; +fAbsMaxValue] with a Gaussian distribution.

Todo
Test whether this is actually correct

◆ IntInRange()

plInt32 plRandom::IntInRange ( plInt32 iMinValue,
plUInt32 uiRange )

Returns an int32 value in range [iMinValue ; iMinValue + uiRange - 1].

Note
A range of 0 is invalid and will assert! It also has no mathematical meaning. A range of 1 already means "between 0 and 1 EXCLUDING 1". So always use a range of at least 1.

◆ UIntInRange()

plUInt32 plRandom::UIntInRange ( plUInt32 uiRange)

Returns a uint32 value in range [0 ; uiRange - 1].

Note
A range of 0 is invalid and will assert! It also has no mathematical meaning. A range of 1 already means "between 0 and 1 EXCLUDING 1". So always use a range of at least 1.

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