PRandom Class Reference

#include <random.h>

List of all members.

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


Detailed Description

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.


Member Enumeration Documentation

anonymous enum [protected]

Enumerator:
RandBits  I recommend 8 for crypto, 4 for simulations.
RandSize 


Constructor & Destructor Documentation

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.

Parameters:
seed  New seed value, must not be zero


Member Function Documentation

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.

Parameters:
seed  New seed value, must not be zero


Member Data Documentation

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]


The documentation for this class was generated from the following file:
Generated on Thu May 27 01:36:49 2010 for PTLib by  doxygen 1.4.7