1 #ifndef _theplu_yat_random_
2 #define _theplu_yat_random_
26 #include "yat/statistics/Histogram.h"
29 #include <boost/concept_check.hpp>
30 #include <boost/thread.hpp>
31 #include <boost/thread/tss.hpp>
33 #include <gsl/gsl_rng.h>
34 #include <gsl/gsl_randist.h>
109 unsigned long max(
void)
const;
115 unsigned long min(
void)
const;
120 std::string
name(
void)
const;
129 const gsl_rng*
rng(
void)
const;
144 void seed(
unsigned long s)
const;
186 RNG& operator=(
const RNG&);
189 void rng_alloc(
void)
const;
191 static RNG* instance_;
194 mutable boost::thread_specific_ptr<gsl_rng> rng_;
195 mutable unsigned long seed_;
197 mutable boost::mutex mutex_;
227 const gsl_rng*
rng(
void)
const;
239 void clone(
const gsl_rng&);
283 void seed(
unsigned long s)
const YAT_DEPRECATE;
379 gsl_ran_discrete_t* gen_;
380 std::vector<double> p_;
397 public std::unary_function<unsigned long, unsigned long>
436 unsigned long operator()(
unsigned long n)
const;
439 unsigned long range_;
465 explicit Poisson(
const double m=1);
478 unsigned long operator()(
const double m)
const;
521 void seed(
unsigned long s)
const YAT_DEPRECATE;
647 explicit Gaussian(
const double s=1,
const double m=0);
668 double operator()(
const double s,
const double m)
const;
684 template<
typename RandomAccessIterator>
687 typedef RandomAccessIterator rai;
688 BOOST_CONCEPT_ASSERT((boost::Mutable_RandomAccessIterator<rai>));