17 #ifndef ROOT_Math_GSLRandomFunctions
18 #define ROOT_Math_GSLRandomFunctions
40 template <
class EngineType >
55 double GausZig(
double mean,
double sigma) {
56 return Engine().GaussianZig(sigma) + mean;
66 double Gaus(
double mean = 0,
double sigma = 1) {
67 return mean + Engine().GaussianZig(sigma);
73 double GausBM(
double mean = 0,
double sigma = 1) {
74 return mean + Engine().Gaussian(sigma);
80 double GausR(
double mean = 0,
double sigma = 1) {
81 return mean + Engine().GaussianRatio(sigma);
88 return Engine().GaussianTail(a,sigma);
94 void Gaussian2D(
double sigmaX,
double sigmaY,
double rho,
double &x,
double &y) {
95 Engine().Gaussian2D(sigmaX, sigmaY, rho, x, y);
102 return Engine().Exponential(tau);
108 return mean + Engine().Cauchy(
gamma/2.0 );
114 double Landau(
double mean = 0,
double sigma = 1) {
115 return mean + sigma*Engine().Landau();
122 return Engine().Gamma(a,b);
128 double Beta(
double a,
double b) {
129 return Engine().Beta(a,b);
136 return Engine().LogNormal(zeta,sigma);
143 return Engine().ChiSquare(nu);
149 double FDist(
double nu1,
double nu2) {
150 return Engine().FDist(nu1,nu2);
157 return Engine().tDist(nu);
163 return Engine().Rayleigh(sigma);
170 return Engine().Logistic(a);
177 return Engine().Pareto(a,b);
183 void Circle(
double &x,
double &y,
double r = 1) {
192 void Sphere(
double &x,
double &y,
double &z,
double r = 1) {
193 Engine().Dir3D(x,y,z);
203 return Engine().Poisson(mu);
209 unsigned int Binomial(
unsigned int ntot,
double prob) {
210 return Engine().Binomial(prob,ntot);
219 return Engine().NegativeBinomial(prob,n);
225 std::vector<unsigned int>
Multinomial(
unsigned int ntot,
const std::vector<double> & p ) {
226 return Engine().Multinomial(ntot,p);
double Landau(double mean=0, double sigma=1)
double Gamma(double a, double b)
RandomFunctions(EngineType &rng)
void Sphere(double &x, double &y, double &z, double r=1)
double Pareto(double a, double b)
double Logistic(double a)
void Gaussian2D(double sigmaX, double sigmaY, double rho, double &x, double &y)
unsigned int NegativeBinomial(double n, double prob)
double BreitWigner(double mean=0., double gamma=1)
double GausZig(double mean, double sigma)
unsigned int Binomial(unsigned int ntot, double prob)
double LogNormal(double zeta, double sigma)
double GaussianTail(double a, double sigma=1)
double Beta(double a, double b)
void Circle(double &x, double &y, double r=1)
double GausBM(double mean=0, double sigma=1)
double Gaus(double mean=0, double sigma=1)
double Rayleigh(double sigma)
double FDist(double nu1, double nu2)
std::vector< unsigned int > Multinomial(unsigned int ntot, const std::vector< double > &p)
double GausR(double mean=0, double sigma=1)
unsigned int Poisson(double mu)
double ChiSquare(double nu)
Various mathematical functions.