PRandom Class Reference

#include <random.h>

List of all members.

Public Member Functions

 PRandom ()
 PRandom (DWORD seed)
void SetSeed (DWORD seed)
unsigned Generate ()
 operator unsigned ()

Static Public Member Functions

static unsigned Number ()
static unsigned int Number (unsigned int min, unsigned int max)

Protected Types

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

void PRandom::SetSeed ( DWORD  seed  ) 

Set the seed for the random number generator.

Parameters:
seed  New seed value, must not be zero

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.

PRandom::operator unsigned (  )  [inline]

Get the next psuedo-random number in sequence.

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.

static unsigned int PRandom::Number ( unsigned int  min,
unsigned int  max 
) [static]

Get a random number between min and max


Member Data Documentation

DWORD PRandom::randcnt [protected]

DWORD PRandom::randrsl[RandSize] [protected]

DWORD PRandom::randmem[RandSize] [protected]

DWORD PRandom::randa [protected]

DWORD PRandom::randb [protected]

DWORD PRandom::randc [protected]


The documentation for this class was generated from the following file:
Generated on Fri Mar 7 06:25:06 2008 for PTLib by  doxygen 1.5.1