Base module

Random

[Random]({#ref classicy_1_1Random #}) implements a pseudo random number generator (PRNG) using the Mersenne Twister algo

Random

#include <icy/random.h>

Random implements a pseudo random number generator (PRNG) using the Mersenne Twister algorithm (std::mt19937).

Public Methods

ReturnNameDescription
RandomCreates and initializes the PRNG. The stateSize parameter is accepted for API compatibility but is ignored; the engine always uses mt19937's fixed state size.
~RandomDestroys the PRNG.
voidseedSeeds the pseudo random generator with the given seed.
voidseedSeeds the pseudo random generator with entropy from std::random_device.
uint32_tnextReturns the next pseudo random number from the mt19937 engine.
uint32_tnextReturns the next pseudo random number in the range [0, n).
charnextCharReturns the next pseudo random byte as a char.
boolnextBoolReturns the next pseudo random boolean value.
floatnextFloatReturns the next pseudo random float in [0.0, 1.0].
doublenextDoubleReturns the next pseudo random double in [0.0, 1.0].

Random

Random(int stateSize)

Creates and initializes the PRNG. The stateSize parameter is accepted for API compatibility but is ignored; the engine always uses mt19937's fixed state size.

Parameters

  • stateSize Ignored; present for API compatibility only.

~Random

~Random()

Destroys the PRNG.


seed

void seed(uint32_t seed)

Seeds the pseudo random generator with the given seed.

Parameters

  • seed 32-bit seed value.

seed

void seed()

Seeds the pseudo random generator with entropy from std::random_device.


next

uint32_t next()

Returns the next pseudo random number from the mt19937 engine.

Returns

Pseudo random uint32_t value.


next

uint32_t next(uint32_t n)

Returns the next pseudo random number in the range [0, n).

Parameters

  • n Upper bound (exclusive).

Returns

Pseudo random value in [0, n).


nextChar

char nextChar()

Returns the next pseudo random byte as a char.

Returns

Pseudo random char value.


nextBool

bool nextBool()

Returns the next pseudo random boolean value.

Returns

true or false with equal probability.


nextFloat

float nextFloat()

Returns the next pseudo random float in [0.0, 1.0].

Returns

Pseudo random float value.


nextDouble

double nextDouble()

Returns the next pseudo random double in [0.0, 1.0].

Returns

Pseudo random double value.

Public Static Methods

ReturnNameDescription
voidgetSeed staticFills the buffer with cryptographically random bytes from std::random_device.

getSeed

static

static void getSeed(char * seed, unsigned length)

Fills the buffer with cryptographically random bytes from std::random_device.

Parameters

  • seed Buffer to fill.

  • length Number of bytes to write into seed.

Private Attributes

ReturnNameDescription
std::mt19937_engine

_engine

std::mt19937 _engine