1 #ifndef _theplu_yat_random_ 2 #define _theplu_yat_random_ 29 #include "yat/statistics/Histogram.h" 32 #include <boost/concept_check.hpp> 34 #include <gsl/gsl_rng.h> 35 #include <gsl/gsl_randist.h> 114 unsigned long max(
void)
const;
120 unsigned long min(
void)
const;
125 std::string
name(
void)
const;
134 const gsl_rng*
rng(
void)
const;
149 void seed(
unsigned long s)
const;
191 RNG& operator=(
const RNG&);
194 void rng_alloc(
void)
const;
196 static std::atomic<RNG*> instance_;
199 static thread_local std::unique_ptr<gsl_rng, void(*)(gsl_rng*)> rng_;
200 mutable unsigned long seed_;
202 mutable std::mutex mutex_;
203 static std::mutex init_mutex_;
233 const gsl_rng*
rng(
void)
const;
245 void clone(
const gsl_rng&);
289 void seed(
unsigned long s)
const YAT_DEPRECATE;
407 gsl_ran_discrete_t* gen_;
408 std::vector<double> p_;
473 unsigned long operator()(
unsigned long n)
const;
483 unsigned long int min(
void)
const;
493 unsigned long int max(
void)
const;
496 unsigned long range_;
570 unsigned long int operator()(
unsigned int n1,
unsigned int n2,
571 unsigned int t)
const;
614 unsigned long int operator()(
unsigned int n1,
unsigned int n2,
615 unsigned int t)
const;
646 explicit Poisson(
const double m=1);
659 unsigned long operator()(
const double m)
const;
697 unsigned long operator()(
double p,
double r)
const;
741 void seed(
unsigned long s)
const YAT_DEPRECATE;
867 explicit Gaussian(
const double s=1,
const double m=0);
888 double operator()(
const double s,
const double m)
const;
905 template<
typename RandomAccessIterator>
909 std::shuffle(first, last, std::default_random_engine(rnd()));
double operator()(void) const
General.
Definition: random.h:342
virtual ~Discrete(void)
The destructor.
DiscreteGeneral & operator=(const DiscreteGeneral &)
Assignment operator.
Continuous(void)
Constructor.
unsigned long operator()(void) const
double operator()(void) const
void seed(unsigned long s) const
Set the seed s for the rng.
Discrete(void)
Constructor.
Discrete random number distributions.
Definition: random.h:259
Generates numbers from a histogram in a continuous manner.
Definition: random.h:784
RNG * rng_
pointer to GSL random generator
Definition: random.h:760
The Department of Theoretical Physics namespace as we define it.
NegativeHyperGeometric(void)
Default constructor.
unsigned long operator()(void) const
Random Number Generator.
Definition: random.h:87
virtual result_type operator()(void) const =0
unsigned long max(void) const
Returns the largest number that the random number generator can return.
ContinuousGeneral(const statistics::Histogram &hist)
Constructor.
unsigned long min(void) const
Returns the smallest number that the random number generator can return.
~DiscreteGeneral(void)
Destructor.
unsigned long int result_type
Definition: random.h:267
unsigned long operator()(void) const
double operator()(void) const
void seed(unsigned long s) const
Set the seed to s.
Poisson(const double m=1)
Constructor.
~RNG_state(void)
Destructor.
Class holding state of a random generator.
Definition: random.h:210
Generator of random numbers from an exponential distribution.
Definition: random.h:818
unsigned long seed_from_devurandom(void)
Seed the rng using the /dev/urandom device.
Poisson Distribution.
Definition: random.h:638
NegativeBinomial(double p, double r)
Constructor.
Exponential(const double m=1)
Constructor.
const gsl_rng * rng(void) const
unsigned long seed_from_devurandom(void)
Set the seed using the /dev/urandom device.
Geomtric Distribution.
Definition: random.h:510
Gaussian(const double s=1, const double m=0)
Constructor.
Negative Binomial Distribution.
Definition: random.h:678
void random_shuffle(RandomAccessIterator first, RandomAccessIterator last)
Convenience function to shuffle a range with singleton RNG.
Definition: random.h:906
RNG_state & operator=(const RNG_state &)
RNG_state(const RNG *)
Constructor.
unsigned long int operator()(void) const
const gsl_rng * rng(void) const
Histograms provide a convenient way of presenting the distribution of a set of data.
Definition: Histogram.h:53
std::string name(void) const
Returns the name of the random number generator.
virtual result_type operator()(void) const =0
void seed(unsigned long s) const
Set the seed to s.
int set_state(const RNG_state &)
Set the state to state.
unsigned long operator()(void) const
Continuous random number distributions.
Definition: random.h:711
unsigned long operator()(void) const
Geometric(double p)
Constructor.
Binomial distribution.
Definition: random.h:318
static RNG * instance(void)
Get an instance of the Random Number Generator.
Binomial(double p, unsigned int n)
Constructor.
RNG * rng_
GSL random gererator.
Definition: random.h:308
double result_type
Definition: random.h:719
virtual ~Continuous(void)
The destructor.
Gaussian distribution.
Definition: random.h:858
HyperGeometric(void)
Defaul constructor.
unsigned long int operator()(void) const
unsigned long seed_from_devurandom(void)
Set the seed using the /dev/urandom device.