1 #ifndef _theplu_yat_random_ 2 #define _theplu_yat_random_ 28 #include "yat/statistics/Histogram.h" 31 #include <boost/concept_check.hpp> 33 #include <gsl/gsl_rng.h> 34 #include <gsl/gsl_randist.h> 112 unsigned long max(
void)
const;
118 unsigned long min(
void)
const;
123 std::string
name(
void)
const;
132 const gsl_rng*
rng(
void)
const;
147 void seed(
unsigned long s)
const;
189 RNG& operator=(
const RNG&);
192 void rng_alloc(
void)
const;
194 static std::atomic<RNG*> instance_;
197 static thread_local std::unique_ptr<gsl_rng, void(*)(gsl_rng*)> rng_;
198 mutable unsigned long seed_;
200 mutable std::mutex mutex_;
201 static std::mutex init_mutex_;
231 const gsl_rng*
rng(
void)
const;
243 void clone(
const gsl_rng&);
287 void seed(
unsigned long s)
const YAT_DEPRECATE;
383 gsl_ran_discrete_t* gen_;
384 std::vector<double> p_;
441 unsigned long operator()(
unsigned long n)
const;
451 unsigned long int min(
void)
const;
461 unsigned long int max(
void)
const;
464 unsigned long range_;
538 unsigned long int operator()(
unsigned int n1,
unsigned int n2,
539 unsigned int t)
const;
582 unsigned long int operator()(
unsigned int n1,
unsigned int n2,
583 unsigned int t)
const;
614 explicit Poisson(
const double m=1);
627 unsigned long operator()(
const double m)
const;
670 void seed(
unsigned long s)
const YAT_DEPRECATE;
796 explicit Gaussian(
const double s=1,
const double m=0);
817 double operator()(
const double s,
const double m)
const;
834 template<
typename RandomAccessIterator>
838 std::random_shuffle(first, last, rnd);
double operator()(void) const
General.
Definition: random.h:340
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:257
Generates numbers from a histogram in a continuous manner.
Definition: random.h:713
RNG * rng_
pointer to GSL random generator
Definition: random.h:689
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:85
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:265
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:208
Generator of random numbers from an exponential distribution.
Definition: random.h:747
unsigned long seed_from_devurandom(void)
Seed the rng using the /dev/urandom device.
Poisson Distribution.
Definition: random.h:606
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:478
Gaussian(const double s=1, const double m=0)
Constructor.
void random_shuffle(RandomAccessIterator first, RandomAccessIterator last)
Convenience function to shuffle a range with singleton RNG.
Definition: random.h:835
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.
Continuous random number distributions.
Definition: random.h:640
unsigned long operator()(void) const
Geometric(double p)
Constructor.
Binomial distribution.
Definition: random.h:316
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:306
double result_type
Definition: random.h:648
virtual ~Continuous(void)
The destructor.
Gaussian distribution.
Definition: random.h:787
HyperGeometric(void)
Defaul constructor.
unsigned long int operator()(void) const
DiscreteGeneral(const statistics::Histogram &hist)
Constructor.
unsigned long seed_from_devurandom(void)
Set the seed using the /dev/urandom device.