gamma#

Generates gamma distributed random values.

Description#

The gamma class object is used in the generate function to provide random numbers with gamma distribution that has shape parameter \(\alpha\), displacement a, and scale parameter \(\beta\), where \(\alpha, \beta, a \in R ; \alpha > 0, \beta > 0\).

The probability density function is given by:

\[\begin{split}f_{\alpha, a, \beta}(x) = \begin{cases} \frac{1}{\Gamma (\alpha) \beta^\alpha} (x - a)^{\alpha - 1} e^{-\frac{(x-a)}{\beta}}, & x \geq a \\ 0, & x < a \end{cases}, - \infty < x < + \infty\end{split}\]

where \(\Gamma \left ( \alpha \right )\) is the complete gamma function.

The cumulative distribution function is as follows:

\[\begin{split}F_{\alpha, a, \beta}(x) = \begin{cases} \int_{a}^{x} \frac{1}{\Gamma (\alpha) \beta^\alpha} (y - a)^{\alpha - 1} e^{-\frac{(y-a)}{\beta}} dy, & x \geq a \\ 0, & x < a \end{cases}, - \infty < x < + \infty\end{split}\]

Product and Performance Information

Performance varies by use, configuration and other factors. Learn more at https://www.intel.com/PerformanceIndex. Notice revision #20201201

API#

Syntax#

namespace oneapi::mkl::rng {
  template<typename RealType = float,
           typename Method = gamma_method::by_default>
  class gamma {
  public:
    using method_type = Method;
    using result_type = RealType;

    gamma(): gamma((RealType)1.0, (RealType)0.0, (RealType)1.0){}
    explicit gamma(RealType alpha, RealType a, RealType beta);
    explicit gamma(const param_type& pt);

    RealType alpha() const;
    RealType a() const;
    RealType beta() const;
    param_type param() const;
    void param(const param_type& pt);
  };
}

Devices supported: CPU and GPU.

Include Files#

  • oneapi/mkl/rng.hpp

Template Parameters#

typename RealType = float

Type of the produced values. The specific values are as follows:

float

double

typename Method = oneapi::mkl::rng::gamma_method::by_default

Generation method. The specific values are as follows:

oneapi::mkl::rng::gamma_method::marsaglia

oneapi::mkl::rng::gamma_method::marsaglia_accurate

See brief descriptions of the methods in Distributions Template Parameter Method.

Input Parameters#

Name

Type

Description

alpha

RealType (float, double)

Shape α

a

RealType (float, double)

Displacement a.

beta

RealType (float, double)

Scalefactor β.