39 #include "gsl/gsl_rng.h" 40 #include "gsl/gsl_randist.h" 86 if (
this == &eng)
return *
this;
115 return gsl_rng_uniform_pos(
fRng->
Rng() );
121 return gsl_rng_uniform_int(
fRng->
Rng(), max );
126 return gsl_rng_min(
fRng->
Rng() );
131 return gsl_rng_max(
fRng->
Rng() );
137 for (
double * itr = begin; itr != end; ++itr ) {
138 *itr = gsl_rng_uniform_pos(
fRng->
Rng() );
150 unsigned int ct =
static_cast<unsigned int>(curtime);
160 gsl_rng_set(
fRng->
Rng(), seed );
168 return std::string( gsl_rng_name(
fRng->
Rng() ) );
175 return gsl_rng_size(
fRng->
Rng() );
196 return gsl_ran_gaussian_ratio_method(
fRng->
Rng(),
sigma);
210 gsl_ran_bivariate_gaussian(
fRng->
Rng(), sigmaX, sigmaY, rho, &
x, &
y);
216 return gsl_ran_exponential(
fRng->
Rng(), mu);
222 return gsl_ran_cauchy(
fRng->
Rng(),
a);
228 return gsl_ran_landau(
fRng->
Rng());
240 return gsl_ran_gamma(
fRng->
Rng(),
a,
b);
252 return gsl_ran_chisq(
fRng->
Rng(), nu);
259 return gsl_ran_fdist(
fRng->
Rng(), nu1, nu2);
265 return gsl_ran_tdist(
fRng->
Rng(), nu);
277 return gsl_ran_logistic(
fRng->
Rng(),
a);
283 return gsl_ran_pareto(
fRng->
Rng(),
a,
b);
301 return gsl_ran_poisson(
fRng->
Rng(), mu);
307 return gsl_ran_binomial(
fRng->
Rng(), p,
n);
313 return gsl_ran_negative_binomial(
fRng->
Rng(), p,
n);
320 std::vector<unsigned int> ival( p.size());
321 gsl_ran_multinomial(
fRng->
Rng(), p.size(), ntot, &p.front(), &ival[0]);
double ChiSquare(double nu) const
Chi square distribution.
double GaussianZig(double sigma) const
Gaussian distribution - Ziggurat method.
void Gaussian2D(double sigmaX, double sigmaY, double rho, double &x, double &y) const
Bivariate Gaussian distribution with correlation.
GSLRandomEngine & operator=(const GSLRandomEngine &eng)
Assignment operator : make a deep copy of the contained GSL generator.
This namespace contains pre-defined functions to be used in conjuction with TExecutor::Map and TExecu...
void SetType(GSLRngWrapper *r)
internal method used by the derived class to set the type of generators
double Exponential(double mu) const
Exponential distribution.
double Pareto(double a, double b) const
Pareto distribution.
unsigned int Poisson(double mu) const
Poisson distribution.
unsigned long MinInt() const
return the minimum integer a generator can handle typically this value is 0
static void Free(void *p)
double Landau() const
Landau distribution.
void Terminate()
delete pointer to contained rng
unsigned long MaxInt() const
return the maximum integer +1 a generator can handle
GSLRandomEngine Base class for all GSL random engines, normally user instantiate the derived classes ...
GSLRngWrapper class to wrap gsl_rng structure.
double GaussianRatio(double sigma) const
Gaussian distribution - Ratio method.
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 ...
double operator()() const
Generate a random number between ]0,1] 0 is excluded and 1 is included.
double FDist(double nu1, double nu2) const
F distrbution.
double Cauchy(double a) const
Cauchy distribution.
virtual ~GSLRandomEngine()
call Terminate()
double Gamma(double a, double b) const
Gamma distribution.
unsigned int Binomial(double p, unsigned int n) const
Binomial distribution.
void RandomArray(Iterator begin, Iterator end) const
Generate an array of random numbers.
GSLRngWrapper * Engine()
internal method to return the engine Used by class like GSLMCIntegrator to set the engine ...
double Beta(double a, double b) const
Beta distribution.
double Rayleigh(double sigma) const
Rayleigh distribution.
std::string Name() const
return name of generator
double Logistic(double a) const
Logistic distribution.
Namespace for new Math classes and functions.
you should not use this method at all Int_t Int_t z
void SetSeed(unsigned int seed) const
set the random generator seed
double LogNormal(double zeta, double sigma) const
Log Normal distribution.
void Dir3D(double &x, double &y, double &z) const
generate random numbers in a 3D sphere of radious 1
unsigned int NegativeBinomial(double p, double n) const
Negative Binomial distribution.
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 Dir2D(double &x, double &y) const
generate random numbers in a 2D circle of radious 1
void Initialize()
initialize the generator If no rng is present the default one based on Mersenne and Twister is create...
double tDist(double nu) const
t student distribution
double Gaussian(double sigma) const
Gaussian distribution - default method is Box-Muller (polar method)
const gsl_rng_type * gsl_rng_mixmax
GSLRandomEngine()
default constructor.
std::vector< unsigned int > Multinomial(unsigned int ntot, const std::vector< double > &p) const
Multinomial distribution.
double GaussianTail(double a, double sigma) const
Gaussian Tail distribution.
unsigned int Size() const
return the state size of generator
double gsl_ran_gaussian_acr(const gsl_rng *r, const double sigma)