oneapi::mkl::rng::device::gaussian

Generates normally distributed random numbers.

Description

The oneapi::mkl::rng::device::gaussian class object is used in the oneapi::mkl::rng::device::generate function to provide random numbers with normal (Gaussian) distribution with mean (a) and standard deviation (stddev, \(\sigma\) ), where \(a, \sigma \in \mathbb{R}; \sigma > 0\)

The probability density function is given by:

\[f_{a, \sigma} (x) = \frac{1}{\sigma \sqrt{2 \pi}} \exp \left( - \frac{(y-a)^2}{2\sigma^2} \right) dy, - \infty < x < + \infty\]

The cumulative distribution function is as follows:

\[F_{a, \sigma} (x) = \int_{-\infty}^{x} \frac{1}{\sigma \sqrt{2 \pi}} \exp \left( - \frac{(y-a)^2}{2\sigma^2} \right) dy, - \infty < x < + \infty\]

The cumulative distribution function \(F_{a, \sigma}(x)\) can be expressed in terms of standard normal distribution \(\phi(x)\) as

\[F_{a,\sigma}(x) = \phi((x - a)/\sigma)\]

API

Syntax

template<typename RealType, typename Method>
class gaussian {
public:
   using method_type = Method;
   using result_type = RealType;

   gaussian(): gaussian((RealType)0.0, (RealType)1.0){}
   explicit gaussian(RealType mean, RealType stddev);
   explicit gaussian(const param_type& pt);

   RealType mean() const;
   RealType stddev() const;
   param_type param() const;
   void param(const param_type& pt);
};

Include Files

  • oneapi/mkl/rng/device.hpp

Template Parameters

typename RealType

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

float

double

typename Method

Generation method. The specific values are as follows:

oneapi::mkl::rng::device::gaussian_method::box_muller2

oneapi::mkl::rng::device::gaussian_method::icdf

Note: To enable oneapi::mkl::rng::device::gaussian_method::box_muller2 based on Vector Math functions, define the MKL_RNG_USE_BINARY_CODE macro and link static oneMKL libraries according to the output produced by Intel® oneAPI Math Kernel Library Link Line Advisor. It may improve performance on some hardware.

Note: oneapi::mkl::rng::device::gaussian_method::icdf is available only if the MKL_RNG_USE_BINARY_CODE macro is defined. Also link static oneMKL libraries according to the output produced by Intel® oneAPI Math Kernel Library Link Line Advisor.

Input Parameters

Name

Type

Description

mean

RealType (float, double)

Mean value a.

stddev

RealType (float, double)

Standard deviation \(\sigma\).