The MRandom class implements several methods to generate sequences of random numbers.
For a given fixed seed, input i produces the i'th random number of a 2^64-long pseudo-random sequence. Different seeds will give different sequences, but nearby seeds may on rare occasion exhibit statistical correlations; it is therefore best to use hashed seeds.
All methods are thread-safe, values can be requested in any order, and sequences are repeatable.
Function Documentation
unsigned long long Rand
(
unsigned long long
i,
unsigned long long
seed
)
Generate a random number.
Parameters
[in]
i
Requested value from the sequence of random numbers.
[in]
seed
Seed value
Returns
. Random number
double Rand_d
(
unsigned long long
i,
unsigned long long
seed
)
Generate a uniform double in [0,1).
Parameters
[in]
i
Requested value from the sequence of random numbers.
[in]
seed
Seed value
Returns
. Random number
float Rand_f
(
unsigned long long
i,
unsigned long long
seed
)
Generate a uniform float in [0,1).
Parameters
[in]
i
Requested value from the sequence of random numbers.
[in]
seed
Seed value
Returns
. Random number
float Rand_f
(
unsigned long long
i,
unsigned long long
seed,
float
rangeMin,
float
rangeMax
)
Generate a uniform float within a given range of values.
Parameters
[in]
i
Requested value from the sequence of random numbers.
[in]
seed
Seed value
[in]
rangeMin
Lower bound on the range of values.
[in]
rangeMax
Upper bound on the range of values.
Returns
. Random number
void Rand_2f
(
float
output[2],
unsigned long long
i,
unsigned long long
seed
)
Generate two uniform floats in [0,1).
Parameters
[out]
output
Holds two random numbers from the sequence.
[in]
i
Requested value from the sequence of random numbers.
[in]
seed
Seed value
void Rand_3f
(
float
output[3],
unsigned long long
i,
unsigned long long
seed
)
Generate three uniform floats in [0,1).
Parameters
[out]
output
Holds three random numbers from the sequence.
[in]
i
Requested value from the sequence of random numbers.