62 static inline double rand() {
67 static inline double rand(
double maxV) {
72 static inline double rand(
double minV,
double maxV) {
73 return minV + (maxV - minV) *
rand();
77 static inline int rand(
int maxV) {
82 static inline int rand(
int minV,
int maxV) {
83 return minV +
rand(maxV - minV);
87 static inline long long int rand(
long long int maxV) {
92 static inline long long int rand(
long long int minV,
long long int maxV) {
93 return minV +
rand(maxV - minV);
97 static inline double randNorm(
double mean,
double variance,
MTRand* rng = 0) {
105 const double v = rng->randExc(2.0) - 1;
107 }
while (q == 0.0 || q >= 1.0);
108 return (
double)(mean + variance * u * sqrt(-2 * log(q) / q));
113 static inline const T&
115 assert(v.size() > 0);
116 return v[
rand((
int)v.size())];
static const T & getRandomFrom(const std::vector< T > &v)
Returns a random element from the given vector.
static void insertRandOptions()
Initialises the given options container with random number options.
static long long int rand(long long int maxV)
Returns a random 64 bit integer in [0, maxV-1].
static long long int rand(long long int minV, long long int maxV)
Returns a random 64 bit integer in [minV, maxV-1].
Utility functions for using a global, resetable random number generator.
static void initRandGlobal(MTRand *which=0)
Reads the given random number options and initialises the random number generator in accordance...
static int rand(int maxV)
Returns a random integer in [0, maxV-1].
static double rand()
Returns a random real number in [0, 1)
uint64 randInt64(const uint64 &n)
static MTRand myRandomNumberGenerator
the random number generator to use
A storage for options typed value containers)
static double rand(double maxV)
Returns a random real number in [0, maxV)
static double randNorm(double mean, double variance, MTRand *rng=0)
Access to a random number from a normal distribution.
static int rand(int minV, int maxV)
Returns a random integer in [minV, maxV-1].
static double rand(double minV, double maxV)
Returns a random real number in [minV, maxV)