4 #include <KrisLibrary/utils/random.h> 22 float frand_gaussian(RNG& rng);
24 double drand_gaussian(RNG& rng);
31 inline void Srand(
unsigned long seed) { rng.seed(seed); }
32 inline long int RandInt() {
return rng.randInt(); }
33 inline long int RandInt(
long int n) {
return rng.randInt(n); }
36 inline Real
Rand() {
return rng.randDouble(); }
37 inline Real
Rand(Real a,Real b) {
return rng.randDouble(a,b); }
38 inline Real RandGaussian() {
return drand_gaussian(rng); }
39 inline Real RandGaussian(Real mean, Real stddev) {
return RandGaussian()*stddev+mean; }
41 inline Real
Rand() {
return rng.randFloat(); }
42 inline Real
Rand(Real a,Real b) {
return rng.randFloat(a,b); }
43 inline Real RandGaussian() {
return frand_gaussian(rng); }
44 inline Real RandGaussian(Real mean, Real stddev) {
return RandGaussian()*stddev+mean; }
47 inline bool RandBool() {
return rng.randInt() < (rng.maxValue()/2); }
90 float frand_gaussian(RNG& rng)
92 static float t = 0.0f;
96 v1 = 2.0f * rng.randFloat() - 1.0f;
97 v2 = 2.0f * rng.randFloat() - 1.0f;
98 r = v1 * v1 + v2 * v2;
100 r = sqrtf((-2.0f*logf(r))/r);
112 double drand_gaussian(RNG& rng)
114 static double t = 0.0;
118 v1 = 2.0 * rng.randDouble() - 1.0;
119 v2 = 2.0 * rng.randDouble() - 1.0;
120 r = v1 * v1 + v2 * v2;
122 r = sqrt((-2.0*log(r))/r);
Common math typedefs, constants, functions.
long int RandInt()
Generates a random int.
Definition: math/random.h:32
bool RandBool()
Generates a random boolean that is true with probability 0.5.
Definition: math/random.h:47
Real Rand()
Generates a random Real uniformly in [0,1].
Definition: math/random.h:36
Contains all definitions in the Math package.
Definition: WorkspaceBound.h:12
Interface for a random number generator.
Definition: utils/random.h:25