[ VIGRA Homepage | Function Index | Class Index | Namespaces | File List | Main Page ]
#include <vigra/random.hxx>
Public Member Functions | |
double | normal (double mean, double stddev) const |
double | normal () const |
UInt32 | operator() () const |
template<class Iterator > | |
RandomNumberGenerator (Iterator init, UInt32 length) | |
RandomNumberGenerator (UInt32 theSeed) | |
RandomNumberGenerator (RandomSeedTag) | |
RandomNumberGenerator () | |
template<class Iterator > | |
void | seed (Iterator init, UInt32 length) |
void | seed (UInt32 theSeed) |
void | seed (RandomSeedTag) |
double | uniform (double lower, double upper) const |
double | uniform () const |
double | uniform53 () const |
UInt32 | uniformInt (UInt32 beyond) const |
UInt32 | uniformInt () const |
Static Public Member Functions | |
static RandomNumberGenerator & | global () |
Generic random number generator.
The actual generator is passed in the template argument Engine
. Two generators are currently available:
RandomMT19937
: The state-of-the-art Mersenne Twister with a state length of 219937 and very high statistical quality. RandomTT800
: (default) The Tempered Twister, a simpler predecessor of the Mersenne Twister with period length 2800. Both generators have been designed by Makoto Matsumoto.
Traits defined:
FunctorTraits<RandomNumberGenerator<Engine> >isInitializer
is true (VigraTrueType
).
Create a new random generator object with standard seed.
Due to standard seeding, the random numbers generated will always be the same. This is useful for debugging.
RandomNumberGenerator | ( | RandomSeedTag | ) |
Create a new random generator object with a random seed.
The seed is obtained from the machines current clock()
and time()
values.
Usage:
RandomNumberGenerator<> rnd = RandomNumberGenerator<>(RandomSeed);
RandomNumberGenerator | ( | UInt32 | theSeed | ) |
Create a new random generator object from the given seed.
The same seed will always produce identical random sequences.
RandomNumberGenerator | ( | Iterator | init, | |
UInt32 | length | |||
) |
Create a new random generator object from the given seed sequence.
Longer seed sequences lead to better initialization in the sense that the generator's state space is covered much better than is possible with 32-bit seeds alone.
void seed | ( | RandomSeedTag | ) |
Re-initialize the random generator object with a random seed.
The seed is obtained from the machines current clock()
and time()
values.
Usage:
RandomNumberGenerator<> rnd = ...; ... rnd.seed(RandomSeed);
void seed | ( | UInt32 | theSeed | ) |
Re-initialize the random generator object from the given seed.
The same seed will always produce identical random sequences.
void seed | ( | Iterator | init, | |
UInt32 | length | |||
) |
Re-initialize the random generator object from the given seed sequence.
Longer seed sequences lead to better initialization in the sense that the generator's state space is covered much better than is possible with 32-bit seeds alone.
UInt32 operator() | ( | ) | const |
Return a uniformly distributed integer random number in [0, 232).
That is, 0 <= i < 232.
UInt32 uniformInt | ( | ) | const |
Return a uniformly distributed integer random number in [0, 232).
That is, 0 <= i < 232.
Return a uniformly distributed integer random number in [0, beyond
).
That is, 0 <= i < beyond
.
double uniform53 | ( | ) | const |
Return a uniformly distributed double-precision random number in [0.0, 1.0).
That is, 0.0 <= i < 1.0. All 53-bit bits of the mantissa are random (two 32-bit integers are used to create this number).
double uniform | ( | ) | const |
Return a uniformly distributed double-precision random number in [0.0, 1.0].
That is, 0.0 <= i <= 1.0. This nuber is computed by uniformInt()
/ 232, so it has effectively only 32 random bits.
double uniform | ( | double | lower, | |
double | upper | |||
) | const |
Return a uniformly distributed double-precision random number in [lower, upper].
That is, lower
<= i <= upper
. This number is computed from uniform()
, so it has effectively only 32 random bits.
double normal | ( | double | mean, | |
double | stddev | |||
) | const |
Return a normal variate (Gaussian) random number with the given mean and standard deviation.
It uses the polar form of the Box-Muller transform.
static RandomNumberGenerator& global | ( | ) | [static] |
Access the global (program-wide) instance of the present random number generator.
Normally, you will create a local generator by one of the constructor calls. But sometimes it is useful to have all program parts access the same generator.
© Ullrich Köthe (ullrich.koethe@iwr.uni-heidelberg.de) |
html generated using doxygen and Python
|