Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members  

TRNG::ParkMiller Class Reference

linear congruential generator. More...

#include <trng.h>

Inheritance diagram for TRNG::ParkMiller:

TRNG::RNG List of all members.

Public Methods

const char* name (void)
 pseudo random number generator's name. More...

void reset (void)
 reset the pseudo random number generator. More...

void seed (long s=0l)
 seed the pseudo random number generator. More...

long rand (void)
 next pseudo random number. More...

void split (long s, long n)
 sequence splitting. More...

void jump2 (long s)
 sequence splitting. More...

void save_status (std::vector<long> &s)
 status saving. More...

void load_status (const std::vector<long> &s)
 status restoring. More...

 ParkMiller (long a_=16807l, long modulus_=2147483647l, long seed_=0l)
 constructor. More...


Static Public Attributes

const RNG_type type = ParkMiller_t
 pseudo random number generator type. More...


Detailed Description

linear congruential generator.

This class implements a simple linear congruential pseudo random number generator with a prime modulus in the form

is the actual pseudo random number. The modulus has to be a prime smaller than and a generating element of the multiplicative group modulo to generate a maxmal length period.

Author(s):
Heiko Bauke

Definition at line 1049 of file trng.h.


Constructor & Destructor Documentation

TRNG::ParkMiller::ParkMiller ( long a_ = 16807l,
long modulus_ = 2147483647l,
long seed_ = 0l )
 

The constructor's default values implement a modified random number generator proposed by Park and Miller. This generator has a period of .

Parameters:
a_   multiplier
modulus_   prime modulus
seed_   default seed


Member Function Documentation

const char* TRNG::ParkMiller::name ( void )
 

Returns a pointer to a zero terminated string containing the pseudo random number generator's name.

Returns:
pointer to a zero termiated string

Reimplemented from TRNG::RNG.

void TRNG::ParkMiller::reset ( void )
 

The pseudo random number generator's parameters are set to some default values.

Reimplemented from TRNG::RNG.

void TRNG::ParkMiller::seed ( long s = 0l )
 

The pseudo random number generator's state is set. Calling reset() and seed() with the seed value used by the initialisation will set the generator in the same state as after initialisation.

Parameters:
s   new seed
Exceptions:
error   if
See also:
TRNG::error

Reimplemented from TRNG::RNG.

long TRNG::ParkMiller::rand ( void )
 

This is the generator's core method. It calculates the next pseudo random number. It's an integer number with . You can determine the upper bound by calling the method max().

Returns:
next integer pseudo random number

Reimplemented from TRNG::RNG.

void TRNG::ParkMiller::split ( long s,
long n )
 

The pseudo random number generator's sequence is splitted into sequences using the leapfrog method. Sequence number is selected.

Parameters:
s   number of sequences
n   selected sequence
Exceptions:
error   if or or
See also:
TRNG::error

Reimplemented from TRNG::RNG.

void TRNG::ParkMiller::jump2 ( long s )
 

The pseudo random number generator jumps steps ahead.

Parameters:
s   determines the jump size
Exceptions:
error   if
See also:
TRNG::error

Reimplemented from TRNG::RNG.

void TRNG::ParkMiller::save_status ( std::vector< long >& s )
 

The status of the pseudo random number generator is saved into a vector.

Parameters:
s   reference to a vector of long

Reimplemented from TRNG::RNG.

void TRNG::ParkMiller::load_status ( const std::vector< long >& s )
 

The status of the pseudo random number generator is restored from a vector.

Parameters:
s   reference to a vector of long

Reimplemented from TRNG::RNG.


Member Data Documentation

const RNG_type TRNG::ParkMiller::type = ParkMiller_t [static]
 

This numerical value determins the random number generator type.

Reimplemented from TRNG::RNG.

Definition at line 1053 of file trng.h.


The documentation for this class was generated from the following file:
Generated at Tue Apr 30 12:03:21 2002 for Tina's Random Number Generators by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000