Distributions Template Parameter Method

Distributions Template Parameter Method#

Method Type

Distributions

Math Description

uniform_method::standard

uniform_method::accurate

uniform

Standard method. It involves transforming the output of a generator by scaling and shifting it to fit within the desired interval. uniform_method::accurate checks for additional s and d data types. For integer data types, it uses d as a BRNG data type (s BRNG data type is used in uniform_method::standard method on GPU).

gaussian_method::box_muller

gaussian

Generates normally distributed random number x through the pair of uniformly distributed numbers u1 and u2 according to the formula: \(x = \sqrt {-2 \ln u_1} \sin {2 \pi u_2}\).

gaussian_method::box_muller2

gaussian

Generates normally distributed random numbers x1 and x2 through the pair of uniformly distributed numbers u1 and u2 according to the formulas: \(x_1 = \sqrt{-2 \ln u_1} \sin {2 \pi u_2}\), \(x_2 = \sqrt{-2 \ln u_1} \cos {2 \pi u_2}\).

gaussian_method::icdf

geometric_method::icdf

gaussian

geometric

Inverse cumulative distribution function (ICDF) method.

exponential_method::icdf

exponential_method::icdf_accurate

exponential

Inverse cumulative distribution function (ICDF) method.

weibull_method::icdf

weibull_method::icdf_accurate

weibull

Inverse cumulative distribution function (ICDF) method.

cauchy_method::icdf

cauchy

Inverse cumulative distribution function (ICDF) method.

rayleigh_method::icdf

rayleigh_method::icdf_accurate

rayleigh

Inverse cumulative distribution function (ICDF) method.

lognormal_method::icdf

lognormal_method::icdf_accurate

lognormal

Inverse cumulative distribution function (ICDF) method.

lognormal_method::box_muller2

lognormal_method::box_muller2_accurate

lognormal

Normally distributed random numbers x1 and x2 are produced through the pair of uniformly distributed numbers u1 and u2 according to the formulas: \(x_1 = -2 \ln u_1 \sin {2 \pi u_2}\), \(x_2 = -2 \ln u_1 \cos {2 \pi u_2}\) Then x1 and x2 are converted to lognormal distribution.

gumbel_method::icdf

gumbel

Inverse cumulative distribution function (ICDF) method.

bernoulli_method::icdf

bernoulli

Inverse cumulative distribution function (ICDF) method.

gamma_method::marsaglia

gamma_method::marsaglia_accurate

gamma

For \(\alpha > 1\), a gamma distributed random number is generated as a cube of a properly scaled normal random number; for \(0.6 \le \alpha < 1\), a gamma distributed random number is generated using rejection from Weibull distribution; for \(\alpha < 0.6\), a gamma distributed random number is obtained using transformation of exponential power distribution; for \(\alpha = 1\), gamma distribution is reduced to exponential distribution.

beta_method::cja

beta_method::cja_accurate

beta

Cheng-Johnk-Atkinson method:
  • If \(\min(p, q) > 1\), Cheng method is used.

  • If \(\min(p, q) < 1\):
    • If \(q + K*p2 + C \leq 0 (K=0.852..., C=-0.956...)\), Johnk method is used.

    • Otherwise, Atkinson switching algorithm is used.

  • If \(\min(p, q) < 1, \max(p, q) > 1\), Atkinson switching algorithm is used.

  • If \(p = 1\) or \(q = 1\), inverse cumulative distribution function method is used

  • If \(p = 1\) and \(q = 1\), beta distribution is reduced to uniform distribution.

chi_square_method::gamma_based

chi_square

(most common): If \(\nu \ge 17\) or ν is odd and \(5 \le \nu \le 15\), a chi-square distribution is reduced to a Gamma distribution with these parameters: Shape \(\alpha = \nu / 2\) Offset \(a = 0\) Scale factor \(\beta = 2\). The random numbers of the Gamma distribution are generated.

gaussian_mv_method::box_muller

gaussian_mv_method::box_muller2

gaussian_mv_method::icdf

gaussian_mv

BoxMuller method for multivariate Gaussian distribution. BoxMuller_2 method for multivariate Gaussian distribution. Inverse cumulative distribution function (ICDF) method.

binomial_method::btpe

binomial

Acceptance/rejection method for \(ntrial * \min(p, 1p) \ge 30\) with decomposition into four regions:

Two parallelograms

Triangle

Left exponential tail

Right exponential tail

poisson_method::ptpe

poisson

Acceptance/rejection method for \(\lambda \ge 27\) with decomposition into four regions:

Two parallelograms

Triangle

Left exponential tail

Right exponenetial tail

poisson_method::gaussian_icdf_based

poisson_v_method::gaussian_icdf_based

poisson poisson_v

for \(\lambda \ge 1\), method based on Poisson inverse CDF approximation by Gaussian inverse CDF; for \(\lambda < 1\), table lookup method is used.

hypergeometric_method::h2pe

hypergeometric

Acceptance/rejection method for large mode of distribution with decomposition into three regions:

Rectangular

Left exponential tail

Right exponential tail

negative_binomial_method::nbar

negative_binomial

Acceptance/rejection method for: \(\frac{(a-1) \cdot (1-p)}{p} \geq 100\) with decomposition into five regions:

Rectangular

(2) trapezoid

Left exponential tail

Right exponential tail

multinomial_method::poisson_icdf_based

multinomial

Multinomial distribution with parameters m, k, and a probability vector p. Random numbers of the multinomial distribution are generated by Poisson Approximation method.