MachineIntelligenceCore:Algorithms
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
mic::utils::RandomGenerator Class Reference

Random generator - defined in the form of a singleton, with double-checked locking pattern (DCLP) based access to instance. More...

#include <RandomGenerator.hpp>

Public Member Functions

uint64_t uniRandInt (int min=0, int max=RAND_MAX)
 
double uniRandReal (double min=0, double max=1)
 
double normRandReal (double mean=0, double variance=1)
 

Static Public Member Functions

static RandomGeneratorgetInstance ()
 

Private Member Functions

 RandomGenerator ()
 

Private Attributes

std::random_device rd
 
std::mt19937_64 rng_mt19937_64
 
std::uniform_int_distribution uniform_int_dist
 Uniform distribution from 0 to RAND_MAX (integers). More...
 
std::uniform_real_distribution uniform_real_dist
 Uniform distribution from 0 to 1 (real values). More...
 
std::normal_distribution normal_real_dist
 Normal distribution from 0 to 1 (real values). More...
 

Static Private Attributes

static boost::atomic
< RandomGenerator * > 
instance_
 
static boost::mutex instantiation_mutex
 

Detailed Description

Random generator - defined in the form of a singleton, with double-checked locking pattern (DCLP) based access to instance.

Author
tkornuta

Definition at line 38 of file RandomGenerator.hpp.

Constructor & Destructor Documentation

mic::utils::RandomGenerator::RandomGenerator ( )
private

Private constructor. Initialize pseudo-random generator and distributions parameters.

Definition at line 58 of file RandomGenerator.cpp.

Referenced by getInstance().

Member Function Documentation

RandomGenerator * mic::utils::RandomGenerator::getInstance ( )
static

Method for accessing the object instance, with double-checked locking optimization.

Returns
Instance of ApplicationState singleton.

Definition at line 37 of file RandomGenerator.cpp.

References instance_, instantiation_mutex, and RandomGenerator().

Here is the call graph for this function:

double mic::utils::RandomGenerator::normRandReal ( double  mean = 0,
double  variance = 1 
)

Return a random real number - normal distribution.

Parameters
meanMean.
varianceVariance.
Returns
Random real value.

Definition at line 81 of file RandomGenerator.cpp.

References normal_real_dist, and rng_mt19937_64.

uint64_t mic::utils::RandomGenerator::uniRandInt ( int  min = 0,
int  max = RAND_MAX 
)

Return a random integer from range <0, RAND_MAX> - uniform distribution.

Returns
Random integer.

Definition at line 69 of file RandomGenerator.cpp.

References rng_mt19937_64.

double mic::utils::RandomGenerator::uniRandReal ( double  min = 0,
double  max = 1 
)

Return a random real number from range <min, max> - uniform distribution.

Parameters
minMin value.
maxMax value.
Returns
Random real value.

Definition at line 76 of file RandomGenerator.cpp.

References rng_mt19937_64, and uniform_real_dist.

Member Data Documentation

boost::atomic< RandomGenerator * > mic::utils::RandomGenerator::instance_
staticprivate

Private instance - accessed as atomic operation.

Definition at line 74 of file RandomGenerator.hpp.

Referenced by getInstance().

boost::mutex mic::utils::RandomGenerator::instantiation_mutex
staticprivate

Mutex used for instantiation of the instance.

Definition at line 79 of file RandomGenerator.hpp.

Referenced by getInstance().

std::normal_distribution mic::utils::RandomGenerator::normal_real_dist
private

Normal distribution from 0 to 1 (real values).

Definition at line 103 of file RandomGenerator.hpp.

Referenced by normRandReal().

std::random_device mic::utils::RandomGenerator::rd
private

Random device used for generation of random numbers.

Definition at line 89 of file RandomGenerator.hpp.

std::mt19937_64 mic::utils::RandomGenerator::rng_mt19937_64
private

Mersenne Twister pseudo-random generator of 32-bit numbers with a state size of 19937 bits.

Definition at line 94 of file RandomGenerator.hpp.

Referenced by normRandReal(), uniRandInt(), and uniRandReal().

std::uniform_int_distribution mic::utils::RandomGenerator::uniform_int_dist
private

Uniform distribution from 0 to RAND_MAX (integers).

Definition at line 97 of file RandomGenerator.hpp.

std::uniform_real_distribution mic::utils::RandomGenerator::uniform_real_dist
private

Uniform distribution from 0 to 1 (real values).

Definition at line 100 of file RandomGenerator.hpp.

Referenced by uniRandReal().


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