17 #ifndef ROOT_Math_GSLRandomFunctions
18 #define ROOT_Math_GSLRandomFunctions
40 template <
class EngineType >
41 class RandomFunctions<EngineType, ROOT::Math::GSLRandomEngine> :
public RandomFunctions<EngineType, DefaultEngineType> {
50 RandomFunctions(EngineType & rng) : RandomFunctions<EngineType, DefaultEngineType>(rng) {}
53 inline EngineType & Engine() {
return RandomFunctions<EngineType,DefaultEngineType>::Rng(); }
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);
87 double GaussianTail(
double a,
double sigma = 1) {
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);
101 double Exp(
double tau) {
102 return Engine().Exponential(tau);
107 double BreitWigner(
double mean = 0.,
double gamma = 1) {
108 return mean + Engine().Cauchy( gamma/2.0 );
114 double Landau(
double mean = 0,
double sigma = 1) {
115 return mean + sigma*Engine().Landau();
121 double Gamma(
double a,
double b) {
122 return Engine().Gamma(a,b);
128 double Beta(
double a,
double b) {
129 return Engine().Beta(a,b);
135 double LogNormal(
double zeta,
double sigma) {
136 return Engine().LogNormal(zeta,sigma);
142 double ChiSquare(
double nu) {
143 return Engine().ChiSquare(nu);
149 double FDist(
double nu1,
double nu2) {
150 return Engine().FDist(nu1,nu2);
156 double tDist(
double nu) {
157 return Engine().tDist(nu);
162 double Rayleigh(
double sigma) {
163 return Engine().Rayleigh(sigma);
169 double Logistic(
double a) {
170 return Engine().Logistic(a);
176 double Pareto(
double a,
double b) {
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);
202 unsigned int Poisson(
double mu) {
203 return Engine().Poisson(mu);
209 unsigned int Binomial(
unsigned int ntot,
double prob) {
210 return Engine().Binomial(prob,ntot);
218 unsigned int NegativeBinomial(
double n,
double prob) {
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);