PTLib
Version 2.14.3
|
Mersenne Twister random number generator. More...
#include <random.h>
Public Member Functions | |
PRandom () | |
Construct the random number generator. More... | |
PRandom (uint32_t seed) | |
Construct the random number generator. More... | |
void | SetSeed (uint32_t seed) |
Set the seed for the random number generator. More... | |
uint32_t | Generate () |
Get the next psuedo-random number in sequence. More... | |
uint32_t | Generate (uint32_t maximum) |
Get the next psuedo-random number in sequence. More... | |
uint32_t | Generate (uint32_t minimum, uint32_t maximum) |
Get the next psuedo-random number in sequence. More... | |
operator uint32_t () | |
Get the next psuedo-random number in sequence. More... | |
Static Public Member Functions | |
static uint32_t | Number () |
Get the next psuedo-random number in sequence. More... | |
static uint32_t | Number (unsigned maximum) |
Get a random number between zero and maximum. More... | |
static uint32_t | Number (unsigned minimum, unsigned maximum) |
Get a random number between minimum and maximum. More... | |
static PBYTEArray | Octets (PINDEX size) |
Get a random set of bits. More... | |
static void | Octets (PBYTEArray &octets, PINDEX size=0) |
static void | Octets (BYTE *octets, PINDEX size) |
Protected Types | |
enum | { RandBits = 8, RandSize = 1<<RandBits } |
Protected Attributes | |
uint32_t | randcnt |
uint32_t | randrsl [RandSize] |
uint32_t | randmem [RandSize] |
uint32_t | randa |
uint32_t | randb |
uint32_t | randc |
Mersenne Twister random number generator.
An application would create a static instance of this class, and then use if to generate a sequence of psuedo-random numbers.
Usually an application would simply use PRandom::Number() but if performance is an issue then it could also create a static local variable such as: { static PRandom rand; for (i = 0; i < 10000; i++) array[i] = rand; }
This method is not thread safe, so it is the applications responsibility to assure that its calls are single threaded.
PRandom::PRandom | ( | ) |
Construct the random number generator.
This version will seed the random number generator with a value based on the system time as returned by time() and clock().
PRandom::PRandom | ( | uint32_t | seed | ) |
Construct the random number generator.
This version allows the application to choose the seed, thus letting it get the same sequence of values on each run. Useful for debugging.
seed | New seed value, must not be zero |
uint32_t PRandom::Generate | ( | ) |
Get the next psuedo-random number in sequence.
This generates one pseudorandom unsigned integer (32bit) which is uniformly distributed among 0 to 2^32-1 for each call.
Referenced by operator uint32_t().
uint32_t PRandom::Generate | ( | uint32_t | maximum | ) |
Get the next psuedo-random number in sequence.
This generates one pseudorandom unsigned integer from 0 to maximum. Uses the Generate() function and scales accordingly.
uint32_t PRandom::Generate | ( | uint32_t | minimum, |
uint32_t | maximum | ||
) |
Get the next psuedo-random number in sequence.
This generates one pseudorandom unsigned integer from minimum to maximum. Uses the Generate() function and scales and shifts accordingly.
|
static |
Get the next psuedo-random number in sequence.
This utilises a single system wide thread safe PRandom variable. All threads etc will share the same psuedo-random sequence.
|
static |
Get a random number between zero and maximum.
|
static |
Get a random number between minimum and maximum.
|
static |
Get a random set of bits.
|
static |
|
static |
|
inline |
Get the next psuedo-random number in sequence.
This generates one pseudorandom unsigned integer which is uniformly distributed among 0 to maximum for each call. Uses Generate()
References Generate().
void PRandom::SetSeed | ( | uint32_t | seed | ) |
Set the seed for the random number generator.
seed | New seed value, must not be zero |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |