RandomNumberGenerator Class Reference

#include <RandomNumberGenerator.hpp>

Collaboration diagram for RandomNumberGenerator:
Collaboration graph
[legend]

List of all members.

Public Member Functions

double StandardNormalRandomDeviate ()
double NormalRandomDeviate (double mean, double sd)
double ranf ()
unsigned randMod (unsigned base)
void Shuffle (unsigned num, std::vector< unsigned > &rValues)
void Reseed (int seed)

Static Public Member Functions

static RandomNumberGeneratorInstance ()
static void Destroy ()

Protected Member Functions

 RandomNumberGenerator ()

Private Member Functions

template<class Archive >
void save (Archive &archive, const unsigned int version) const
template<class Archive >
void load (Archive &archive, const unsigned int version)

Private Attributes

int mSeed
unsigned mTimesCalled

Static Private Attributes

static RandomNumberGeneratormpInstance = NULL

Friends

class boost::serialization::access

Detailed Description

A special singleton class allowing one to generate different types of random number in a globally consistent way.

Definition at line 40 of file RandomNumberGenerator.hpp.


Constructor & Destructor Documentation

RandomNumberGenerator::RandomNumberGenerator (  )  [protected]

Protected constructor. Use Instance() to access the random number generator.

Definition at line 40 of file RandomNumberGenerator.cpp.

Referenced by Instance().


Member Function Documentation

void RandomNumberGenerator::Destroy (  )  [static]

Destroy the current instance of the random number generator. The next call to Instance will create a new instance and re-seed. This method *must* be called before program exit, to avoid a memory leak.

Definition at line 56 of file RandomNumberGenerator.cpp.

References mpInstance.

Referenced by AbstractCellBasedTestSuite::tearDown().

RandomNumberGenerator * RandomNumberGenerator::Instance (  )  [static]
template<class Archive >
void RandomNumberGenerator::load ( Archive &  archive,
const unsigned int  version 
) [inline, private]

Load the RandomNumberGenerator and its member variables.

Serialization of a RandomNumberGenerator object must be done with care. Before the object is serialized via a pointer, it *MUST* be serialized directly, or an assertion will trip when a second instance of the class is created on de-serialization.

Parameters:
archive the archive
version the current version of this class

Definition at line 155 of file RandomNumberGenerator.hpp.

References mSeed, and mTimesCalled.

double RandomNumberGenerator::NormalRandomDeviate ( double  mean,
double  sd 
)

Generate a random number from a normal distribution with given mean and standard deviation.

Parameters:
mean the mean of the normal distribution from which the random number is drawn
sd the standard deviation of the normal distribution from which the random number is drawn

Definition at line 77 of file RandomNumberGenerator.cpp.

References StandardNormalRandomDeviate().

Referenced by SimpleWntCellCycleModel::SetG1Duration(), and StochasticWntCellCycleModel::SetG2Duration().

unsigned RandomNumberGenerator::randMod ( unsigned  base  ) 

Generate a random number modulo base (ie an integer within the range 0,..,base-1),

Parameters:
base the order of the field of positive integers from which the random number is drawn

Definition at line 65 of file RandomNumberGenerator.cpp.

References mTimesCalled.

Referenced by TetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::PermuteNodes(), and Shuffle().

double RandomNumberGenerator::ranf (  ) 
void RandomNumberGenerator::Reseed ( int  seed  ) 

Reseed the random number generator.

Parameters:
seed the new seed

Definition at line 82 of file RandomNumberGenerator.cpp.

References mSeed, and mTimesCalled.

Referenced by AbstractCellBasedTestSuite::setUp().

template<class Archive >
void RandomNumberGenerator::save ( Archive &  archive,
const unsigned int  version 
) const [inline, private]

Save the RandomNumberGenerator and its member variables.

Serialization of a RandomNumberGenerator object must be done with care. Before the object is serialized via a pointer, it *MUST* be serialized directly, or an assertion will trip when a second instance of the class is created on de-serialization.

Parameters:
archive the archive
version the current version of this class

Definition at line 137 of file RandomNumberGenerator.hpp.

References mSeed, and mTimesCalled.

void RandomNumberGenerator::Shuffle ( unsigned  num,
std::vector< unsigned > &  rValues 
)

Shuffle the integers 0,1,..,num-1, using the Knuth-algorithm (also called the Fisher-Yates algorithm), a linear time unbiased method. The shuffled values are returned in rValues, which doesn't need to be correctly-sized when passed in.

Parameters:
num the number of integers to shuffle
rValues the shuffled values

Definition at line 89 of file RandomNumberGenerator.cpp.

References Instance(), and randMod().

double RandomNumberGenerator::StandardNormalRandomDeviate (  ) 

Generate a random number from the normal distribution with mean 0 and standard distribution 1.

Generate a random number from the normal distribution with mean 0 and standard distribution 1.

(STANDARD-) N O R M A L DISTRIBUTION

FOR DETAILS SEE:

AHRENS, J.H. AND DIETER, U. EXTENSIONS OF FORSYTHE'S METHOD FOR RANDOM SAMPLING FROM THE NORMAL DISTRIBUTION. MATH. COMPUT., 27,124 (OCT. 1973), 927 - 937.

ALL STATEMENT NUMBERS CORRESPOND TO THE STEPS OF ALGORITHM 'FL' (M=5) IN THE ABOVE PAPER (SLIGHTLY MODIFIED IMPLEMENTATION)

Modified by Barry W. Brown, Feb 3, 1988 to use RANF instead of SUNIF. The argument IR thus goes away.

THE DEFINITIONS OF THE CONSTANTS A(K), D(K), T(K) AND H(K) ARE ACCORDING TO THE ABOVEMENTIONED ARTICLE

Definition at line 134 of file RandomNumberGenerator.cpp.

References ranf().

Referenced by NormalRandomDeviate().


Member Data Documentation

Pointer to the single instance.

Definition at line 122 of file RandomNumberGenerator.hpp.

Referenced by Destroy(), and Instance().

The random number generator seed.

Definition at line 116 of file RandomNumberGenerator.hpp.

Referenced by load(), Reseed(), and save().

The number of times the random number generator has been called.

Definition at line 119 of file RandomNumberGenerator.hpp.

Referenced by load(), randMod(), ranf(), Reseed(), and save().


The documentation for this class was generated from the following files:

Generated by  doxygen 1.6.2