38 #include "gsl/gsl_rng.h" 39 #include "gsl/gsl_randist.h" 85 if (
this == &eng)
return *
this;
114 return gsl_rng_uniform_pos(
fRng->
Rng() );
120 return gsl_rng_uniform_int(
fRng->
Rng(), max );
125 return gsl_rng_min(
fRng->
Rng() );
130 return gsl_rng_max(
fRng->
Rng() );
136 for (
double * itr = begin; itr != end; ++itr ) {
137 *itr = gsl_rng_uniform_pos(
fRng->
Rng() );
149 unsigned int ct =
static_cast<unsigned int>(curtime);
159 gsl_rng_set(
fRng->
Rng(), seed );
167 return std::string( gsl_rng_name(
fRng->
Rng() ) );
174 return gsl_rng_size(
fRng->
Rng() );
183 return gsl_ran_gaussian_ziggurat(
fRng->
Rng(), sigma);
189 return gsl_ran_gaussian(
fRng->
Rng(), sigma);
195 return gsl_ran_gaussian_ratio_method(
fRng->
Rng(), sigma);
203 return gsl_ran_gaussian_tail(
fRng->
Rng(), a, sigma);
209 gsl_ran_bivariate_gaussian(
fRng->
Rng(), sigmaX, sigmaY, rho, &
x, &
y);
215 return gsl_ran_exponential(
fRng->
Rng(), mu);
221 return gsl_ran_cauchy(
fRng->
Rng(), a);
227 return gsl_ran_landau(
fRng->
Rng());
233 return gsl_ran_beta(
fRng->
Rng(), a,
b);
239 return gsl_ran_gamma(
fRng->
Rng(), a,
b);
245 return gsl_ran_lognormal(
fRng->
Rng(), zeta, sigma);
251 return gsl_ran_chisq(
fRng->
Rng(), nu);
258 return gsl_ran_fdist(
fRng->
Rng(), nu1, nu2);
264 return gsl_ran_tdist(
fRng->
Rng(), nu);
270 return gsl_ran_rayleigh(
fRng->
Rng(), sigma);
276 return gsl_ran_logistic(
fRng->
Rng(), a);
282 return gsl_ran_pareto(
fRng->
Rng(), a,
b);
300 return gsl_ran_poisson(
fRng->
Rng(), mu);
306 return gsl_ran_binomial(
fRng->
Rng(), p, n);
312 return gsl_ran_negative_binomial(
fRng->
Rng(), p, n);
319 std::vector<unsigned int> ival( p.size());
320 gsl_ran_multinomial(
fRng->
Rng(), p.size(), ntot, &p.front(), &ival[0]);
double Beta(double a, double b) const
Beta distribution.
double Rayleigh(double sigma) const
Rayleigh distribution.
GSLRandomEngine & operator=(const GSLRandomEngine &eng)
Assignment operator : make a deep copy of the contained GSL generator.
Namespace for new ROOT classes and functions.
double Gamma(double a, double b) const
Gamma distribution.
double Logistic(double a) const
Logistic distribution.
void SetType(GSLRngWrapper *r)
internal method used by the derived class to set the type of generators
double tDist(double nu) const
t student distribution
void RandomArray(Iterator begin, Iterator end) const
Generate an array of random numbers.
you should not use this method at all Int_t y
double FDist(double nu1, double nu2) const
F distrbution.
unsigned int Poisson(double mu) const
Poisson distribution.
double Pareto(double a, double b) const
Pareto distribution.
static void Free(void *p)
unsigned int NegativeBinomial(double p, double n) const
Negative Binomial distribution.
void Dir3D(double &x, double &y, double &z) const
generate random numbers in a 3D sphere of radious 1
void Terminate()
delete pointer to contained rng
double ChiSquare(double nu) const
Chi square distribution.
GSLRandomEngine Base class for all GSL random engines, normally user instantiate the derived classes ...
GSLRngWrapper class to wrap gsl_rng structure.
unsigned int Size() const
return the state size of generator
double GaussianZig(double sigma) const
Gaussian distribution - Ziggurat method.
double Landau() const
Landau distribution.
double Exponential(double mu) const
Exponential distribution.
std::vector< unsigned int > Multinomial(unsigned int ntot, const std::vector< double > &p) const
Multinomial distribution.
unsigned long MinInt() const
return the minimum integer a generator can handle typically this value is 0
virtual ~GSLRandomEngine()
call Terminate()
double LogNormal(double zeta, double sigma) const
Log Normal distribution.
unsigned long RndmInt(unsigned long max) const
Generate an integer number between [0,max-1] (including 0 and max-1) if max is larger than available ...
GSLRngWrapper * Engine()
internal method to return the engine Used by class like GSLMCIntegrator to set the engine ...
* x
Deprecated and error prone model selection interface.
void Gaussian2D(double sigmaX, double sigmaY, double rho, double &x, double &y) const
Bivariate Gaussian distribution with correlation.
unsigned int Binomial(double p, unsigned int n) const
Binomial distribution.
double GaussianTail(double a, double sigma) const
Gaussian Tail distribution.
double operator()() const
Generate a random number between ]0,1] 0 is excluded and 1 is included.
void SetSeed(unsigned int seed) const
set the random generator seed
Namespace for new Math classes and functions.
you should not use this method at all Int_t Int_t z
std::string Name() const
return name of generator
double Cauchy(double a) const
Cauchy distribution.
unsigned long MaxInt() const
return the maximum integer +1 a generator can handle
double GaussianRatio(double sigma) const
Gaussian distribution - Ratio method.
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
void Initialize()
initialize the generator If no rng is present the default one based on Mersenne and Twister is create...
double Gaussian(double sigma) const
Gaussian distribution - default method is Box-Muller (polar method)
const gsl_rng_type * gsl_rng_mixmax
GSLRandomEngine()
default constructor.
double gsl_ran_gaussian_acr(const gsl_rng *r, const double sigma)
void Dir2D(double &x, double &y) const
generate random numbers in a 2D circle of radious 1