#include <random.h>
Public Member Functions | |
Access | |
Real | next (Real minimum=0.0, Real maximum=1.0) |
returns next random number. More... | |
uint32_t | getSeed () const |
returns the initial seed shift More... | |
Modification | |
void | setSeed (uint32_t initshift) |
initialize all seeds of the random number generator. More... | |
Constructors / destructors | |
Random (uint32_t randomseed=0) | |
default constructor. More... | |
~Random () | |
destructor More... | |
Private Member Functions | |
Helpers | |
Real | next_random () |
executes KISS random number generator and returns a pseudo random Real value in [0,1]. More... | |
Private Attributes | |
Data | |
uint32_t | seedshift |
initial shift for random seeds. More... | |
uint32_t | lin_seed |
random seed for linear congruential RNS. More... | |
uint32_t | xor_seed |
random seed for XOR-shift RNS. More... | |
uint32_t | mwc_seed |
random seed Multiple-with-carry RNS. More... | |
uint32_t | cst_seed |
random seed shifted for mwc_seed. More... | |
Random numbers.
Class Random provides random Real variables, i.e. a value variable that gives another value each time it is accessed. It may be used just like an ordinary Real by means of an overloaded cast operator Real()%.
This is an implementation of KISS random number generator developed by George Marsaglia. KISS is combination of three different random number generators:
KISS has a period of 2^123 and passes all statistical test part of BigCrush-Test of TestU01 [1].
|
explicit |
default constructor.
Constructs a new (pseudo) Random variable using randomseed
as seed for the random variable's sequence.
Definition at line 162 of file random.h.
References Random::setSeed().
uint32_t getSeed | ( | ) | const |
returns the initial seed shift
Definition at line 122 of file random.h.
References Random::seedshift.
returns next random number.
Definition at line 111 of file random.h.
References Random::next_random().
|
private |
executes KISS random number generator and returns a pseudo random Real value in [0,1].
Definition at line 83 of file random.h.
References Random::cst_seed, Random::lin_seed, Random::mwc_seed, SOPLEX_RADD, SOPLEX_RSTEP, and Random::xor_seed.
Referenced by Random::next(), and Random::setSeed().
void setSeed | ( | uint32_t | initshift | ) |
initialize all seeds of the random number generator.
Definition at line 133 of file random.h.
References Random::cst_seed, Random::lin_seed, Random::mwc_seed, Random::next_random(), Random::seedshift, SOPLEX_DEFAULT_CST, SOPLEX_DEFAULT_LIN, SOPLEX_DEFAULT_MWC, SOPLEX_DEFAULT_XOR, SOPLEX_MAX, and Random::xor_seed.
Referenced by Random::Random().
|
private |
random seed shifted for mwc_seed.
Definition at line 76 of file random.h.
Referenced by Random::next_random(), and Random::setSeed().
|
private |
random seed for linear congruential RNS.
Definition at line 73 of file random.h.
Referenced by Random::next_random(), and Random::setSeed().
|
private |
random seed Multiple-with-carry RNS.
Definition at line 75 of file random.h.
Referenced by Random::next_random(), and Random::setSeed().
|
private |
initial shift for random seeds.
Definition at line 72 of file random.h.
Referenced by Random::getSeed(), and Random::setSeed().
|
private |
random seed for XOR-shift RNS.
Definition at line 74 of file random.h.
Referenced by Random::next_random(), and Random::setSeed().