Documentation for OpenFLUID 2.2.0
openfluid::tools::RandomNumberGenerator Class Reference

Detailed Description

Class for management of random. It includes distribution utility functions.

Sources:

Example : declaring an instance

Class for management of random. It includes distribution utility functions.
Definition: RandomNumberGenerator.hpp:81

Example : initializing with a custom seed

Rng.init(50);
void init(long int CustomSeed=-1)

Example : initializing with a random seed

Rng.init(-10);

Example : getting a random generated number using normal distribution

// Mean of 2
// Standard deviation of 10
int randomizedIntValue = Rng.rnorm(2, 10);
std::vector< T > rnorm(size_t N, double Mean, double Sd)
Normal distribution.
Definition: RandomNumberGenerator.hpp:139

Example : getting randomized value using Bernoulli distribution

// Probability of success of 0.7
bool randomizedBoolValue = Rng.bernoulli(0.7);
bool bernoulli(double Probability)
Bernoulli distribution.
Definition: RandomNumberGenerator.hpp:324

#include <tools/RandomNumberGenerator.hpp>

Public Member Functions

 RandomNumberGenerator ()
 
 ~RandomNumberGenerator ()
 
void init (long int CustomSeed=-1)
 
uint64_t getSelectedSeed () const
 
template<typename T >
std::vector< T > rlnorm (size_t N, double Mean, double Sd)
 Log normal distribution. More...
 
template<typename T >
std::vector< T > rnorm (size_t N, double Mean, double Sd)
 Normal distribution. More...
 
template<typename T >
std::vector< T > runif (size_t N, T V1, T V2)
 Uniform distribution. More...
 
template<typename T >
std::vector< T > irunif (size_t N, T V1, T V2)
 Uniform distribution. More...
 
template<typename T >
rlnorm (double Mean, double Sd)
 Log normal distribution. More...
 
template<typename T >
rnorm (double Mean, double Sd)
 Normal distribution. More...
 
template<typename T >
runif (T V1, T V2)
 Real uniform distribution. More...
 
template<typename T >
irunif (T V1, T V2)
 Integer uniform distribution. More...
 
bool bernoulli (double Probability)
 Bernoulli distribution. More...
 

Protected Member Functions

std::mt19937_64 & getGenerator ()
 
virtual void displaySeedInfo ()
 

Protected Attributes

std::mt19937_64 m_Generator
 
uint64_t m_SelectedSeed
 
bool m_DisplaySeed
 
const std::string m_DisplayNameInfo
 
Inheritance diagram for openfluid::tools::RandomNumberGenerator:

Constructor & Destructor Documentation

◆ RandomNumberGenerator()

openfluid::tools::RandomNumberGenerator::RandomNumberGenerator ( )

◆ ~RandomNumberGenerator()

openfluid::tools::RandomNumberGenerator::~RandomNumberGenerator ( )
inline

Member Function Documentation

◆ bernoulli()

bool openfluid::tools::RandomNumberGenerator::bernoulli ( double  Probability)
inline

Bernoulli distribution.

Parameters
Probabilityprobability of success
Returns
Randomized value using bernoulli distribution

◆ displaySeedInfo()

virtual void openfluid::tools::RandomNumberGenerator::displaySeedInfo ( )
protectedvirtual

Reimplemented in openfluid::ware::WareRNG.

◆ getGenerator()

std::mt19937_64& openfluid::tools::RandomNumberGenerator::getGenerator ( )
protected

◆ getSelectedSeed()

uint64_t openfluid::tools::RandomNumberGenerator::getSelectedSeed ( ) const

Returns the seed

Returns
an uint64_t

◆ init()

void openfluid::tools::RandomNumberGenerator::init ( long int  CustomSeed = -1)

Set a seed for the generator

Parameters
[in]CustomSeedThe seed to set. If negative, random seed will be used

◆ irunif() [1/2]

template<typename T >
std::vector<T> openfluid::tools::RandomNumberGenerator::irunif ( size_t  N,
V1,
V2 
)
inline

Uniform distribution.

Template Parameters
Ttype of value for distribution
Parameters
Nnumber of values to generate with distribution
V1min value for distribution
V2max value for distribution
Returns
std::vector<T> vector with N randomized values using integer uniform distribution

◆ irunif() [2/2]

template<typename T >
T openfluid::tools::RandomNumberGenerator::irunif ( V1,
V2 
)
inline

Integer uniform distribution.

Template Parameters
Ttype of value for distribution
Parameters
V1min value for distribution
V2max value for distribution
Returns
Randomized value using integer uniform distribution

◆ rlnorm() [1/2]

template<typename T >
T openfluid::tools::RandomNumberGenerator::rlnorm ( double  Mean,
double  Sd 
)
inline

Log normal distribution.

Template Parameters
Ttype of value for distribution
Parameters
Meanmean for log normal distribution
Sdstandard deviation for log normal distribution
Returns
Randomized value using log normal distribution

◆ rlnorm() [2/2]

template<typename T >
std::vector<T> openfluid::tools::RandomNumberGenerator::rlnorm ( size_t  N,
double  Mean,
double  Sd 
)
inline

Log normal distribution.

Template Parameters
Ttype of value for distribution
Parameters
Nnumber of values to generate with distribution
Meanmean for log normal distribution
Sdstandard deviation for log normal distribution
Returns
std::vector<T> vector with N randomized values using log normal distribution

◆ rnorm() [1/2]

template<typename T >
T openfluid::tools::RandomNumberGenerator::rnorm ( double  Mean,
double  Sd 
)
inline

Normal distribution.

Template Parameters
Ttype of value for distribution
Parameters
Meanmean for normal distribution
Sdstandard deviation for normal distribution
Returns
Randomized value using normal distribution

◆ rnorm() [2/2]

template<typename T >
std::vector<T> openfluid::tools::RandomNumberGenerator::rnorm ( size_t  N,
double  Mean,
double  Sd 
)
inline

Normal distribution.

Template Parameters
Ttype of value for distribution
Parameters
Nnumber of values to generate with distribution
Meanmean for normal distribution
Sdstandard deviation for normal distribution
Returns
std::vector<T> vector with N randomized values using normal distribution

◆ runif() [1/2]

template<typename T >
std::vector<T> openfluid::tools::RandomNumberGenerator::runif ( size_t  N,
V1,
V2 
)
inline

Uniform distribution.

Template Parameters
Ttype of value for distribution
Parameters
Nnumber of values to generate with distribution
V1min value for distribution
V2max value for distribution
Returns
std::vector<T> vector with N randomized values using real uniform distribution

◆ runif() [2/2]

template<typename T >
T openfluid::tools::RandomNumberGenerator::runif ( V1,
V2 
)
inline

Real uniform distribution.

Template Parameters
Ttype of value for distribution
Parameters
V1min value for distribution
V2max value for distribution
Returns
Randomized value using real uniform distribution

Member Data Documentation

◆ m_DisplayNameInfo

const std::string openfluid::tools::RandomNumberGenerator::m_DisplayNameInfo
protected

A string to display the seed in logs as "Seed: ${m_SelectedSeed}"

◆ m_DisplaySeed

bool openfluid::tools::RandomNumberGenerator::m_DisplaySeed
protected

A boolean to check if we need to display the seed in logs

◆ m_Generator

std::mt19937_64 openfluid::tools::RandomNumberGenerator::m_Generator
protected

The Mersenne Twister generator

◆ m_SelectedSeed

uint64_t openfluid::tools::RandomNumberGenerator::m_SelectedSeed
protected

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