LMMS
Loading...
Searching...
No Matches
water::Random Class Reference

#include <Random.h>

Public Member Functions

 Random (int64 seedValue) noexcept
 Random ()
 ~Random () noexcept
int nextInt () noexcept
int nextInt (int maxValue) noexcept
int64 nextInt64 () noexcept
float nextFloat () noexcept
double nextDouble () noexcept
bool nextBool () noexcept
void setSeed (int64 newSeed) noexcept
int64 getSeed () const noexcept
void combineSeed (int64 seedValue) noexcept
void setSeedRandomly ()

Static Public Member Functions

static RandomgetSystemRandom () noexcept

Private Attributes

int64 seed

Detailed Description

A random number generator.

You can create a Random object and use it to generate a sequence of random numbers.

Constructor & Destructor Documentation

◆ Random() [1/2]

water::Random::Random ( int64 seedValue)
explicitnoexcept

Creates a Random object based on a seed value.

For a given seed value, the subsequent numbers generated by this object will be predictable, so a good idea is to set this value based on the time, e.g.

new Random (Time::currentTimeMillis())

◆ Random() [2/2]

water::Random::Random ( )

Creates a Random object using a random seed value. Internally, this calls setSeedRandomly() to randomise the seed.

◆ ~Random()

water::Random::~Random ( )
noexcept

Destructor.

Member Function Documentation

◆ combineSeed()

void water::Random::combineSeed ( int64 seedValue)
noexcept

Merges this object's seed with another value. This sets the seed to be a value created by combining the current seed and this new value.

◆ getSeed()

int64 water::Random::getSeed ( ) const
inlinenoexcept

Returns the RNG's current seed.

◆ getSystemRandom()

Random & water::Random::getSystemRandom ( )
staticnoexcept

The overhead of creating a new Random object is fairly small, but if you want to avoid it, you can call this method to get a global shared Random object.

It's not thread-safe though, so threads should use their own Random object, otherwise you run the risk of your random numbers becoming.. erm.. randomly corrupted..

◆ nextBool()

bool water::Random::nextBool ( )
noexcept

Returns the next random boolean value.

◆ nextDouble()

double water::Random::nextDouble ( )
noexcept

Returns the next random floating-point number.

Returns
a random value in the range 0 (inclusive) to 1.0 (exclusive)

◆ nextFloat()

float water::Random::nextFloat ( )
noexcept

Returns the next random floating-point number.

Returns
a random value in the range 0 (inclusive) to 1.0 (exclusive)

◆ nextInt() [1/2]

int water::Random::nextInt ( )
noexcept

Returns the next random 32 bit integer.

Returns
a random integer from the full range 0x80000000 to 0x7fffffff

◆ nextInt() [2/2]

int water::Random::nextInt ( int maxValue)
noexcept

Returns the next random number, limited to a given range. The maxValue parameter may not be negative, or zero.

Returns
a random integer between 0 (inclusive) and maxValue (exclusive).

◆ nextInt64()

int64 water::Random::nextInt64 ( )
noexcept

Returns the next 64-bit random number.

Returns
a random integer from the full range 0x8000000000000000 to 0x7fffffffffffffff

◆ setSeed()

void water::Random::setSeed ( int64 newSeed)
noexcept

Resets this Random object to a given seed value.

◆ setSeedRandomly()

void water::Random::setSeedRandomly ( )

Reseeds this generator using a value generated from various semi-random system properties like the current time, etc.

Because this function convolves the time with the last seed value, calling it repeatedly will increase the randomness of the final result.

Member Data Documentation

◆ seed

int64 water::Random::seed
private

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