#include <random.h>
Public Member Functions | |
PRandom () | |
PRandom (DWORD seed) | |
void | SetSeed (DWORD seed) |
unsigned | Generate () |
unsigned | Generate (unsigned maximum) |
unsigned | Generate (unsigned minimum, unsigned maximum) |
operator unsigned () | |
Static Public Member Functions | |
static unsigned | Number () |
static unsigned | Number (unsigned maximum) |
static unsigned | Number (unsigned minimum, unsigned maximum) |
Protected Types | |
RandBits = 8 | |
I recommend 8 for crypto, 4 for simulations. | |
RandSize = 1<<RandBits | |
enum | { RandBits = 8, RandSize = 1<<RandBits } |
Protected Attributes | |
DWORD | randcnt |
DWORD | randrsl [RandSize] |
DWORD | randmem [RandSize] |
DWORD | randa |
DWORD | randb |
DWORD | randc |
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.
anonymous enum [protected] |
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 | ( | DWORD | 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 |
unsigned PRandom::Generate | ( | unsigned | minimum, | |
unsigned | 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.
unsigned PRandom::Generate | ( | unsigned | 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.
unsigned 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.
static unsigned PRandom::Number | ( | unsigned | minimum, | |
unsigned | maximum | |||
) | [static] |
Get a random number between minimum and maximum
static unsigned PRandom::Number | ( | unsigned | maximum | ) | [static] |
Get a random number between zero and maximum
static unsigned PRandom::Number | ( | ) | [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.
PRandom::operator unsigned | ( | ) | [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()
void PRandom::SetSeed | ( | DWORD | seed | ) |
Set the seed for the random number generator.
seed | New seed value, must not be zero |
DWORD PRandom::randa [protected] |
DWORD PRandom::randb [protected] |
DWORD PRandom::randc [protected] |
DWORD PRandom::randcnt [protected] |
DWORD PRandom::randmem[RandSize] [protected] |
DWORD PRandom::randrsl[RandSize] [protected] |