Random Number Distributions¶ ↑
This chapter describes functions for generating random variates and computing their probability distributions. Samples from the distributions described in this chapter can be obtained using any of the random number generators in the library as an underlying source of randomness.
In the simplest cases a nonuniform distribution can be obtained analytically from the uniform distribution of a random number generator by applying an appropriate transformation. This method uses one call to the random number generator. More complicated distributions are created by the acceptancerejection method, which compares the desired distribution against a distribution which is similar and known analytically. This usually requires several samples from the generator.
The library also provides cumulative distribution functions and inverse cumulative distribution functions, sometimes referred to as quantile functions. The cumulative distribution functions and their inverses are computed separately for the upper and lower tails of the distribution, allowing full accuracy to be retained for small results.
Contents:
...
and more, see the GSL reference
Introduction¶ ↑
Continuous random number distributions are defined by a probability density function, p(x), such that the probability of x occurring in the infinitesimal range x to x+dx is p dx.
The cumulative distribution function for the lower tail P(x) is defined by the integral, and gives the probability of a variate taking a value less than x.
The cumulative distribution function for the upper tail Q(x) is defined by the integral, and gives the probability of a variate taking a value greater than x.
The upper and lower cumulative distribution functions are related by P(x) + Q(x) = 1 and satisfy 0 <= P(x) <= 1, 0 <= Q(x) <= 1.
The inverse cumulative distributions, x=P^{1}(P) and x=Q^{1}(Q) give the values of x which correspond to a specific value of P or Q. They can be used to find confidence limits from probability values.
For discrete distributions the probability of sampling the integer value k is given by p(k), where sum_k p(k) = 1. The cumulative distribution for the lower tail P(k) of a discrete distribution is defined as, where the sum is over the allowed range of the distribution less than or equal to k.
The cumulative distribution for the upper tail of a discrete distribution Q(k) is defined as giving the sum of probabilities for all values greater than k. These two definitions satisfy the identity P(k)+Q(k)=1.
If the range of the distribution is 1 to n inclusive then P(n)=1, Q(n)=0 while P(1) = p(1), Q(1)=1p(1).
The Gaussian Distribution¶ ↑

GSL::Rng#gaussian(sigma = 1)

GSL::Ran::gaussian(rng, sigma = 1)

GSL::Rng#ugaussian

GSL::Ran::ugaussian
These return a Gaussian random variate, with mean zero and standard deviation
sigma
.

GSL::Ran::gaussian_pdf(x, sigma = 1)
Computes the probability density p(x) at
x
for a Gaussian distribution with standard deviationsigma
.

GSL::Rng#gaussian_ratio_method(sigma = 1)

GSL::Ran::gaussian_ratio_method(rng, sigma = 1)
Use KindermanMonahan ratio method.

GSL::Cdf::gaussian_P(x, sigma = 1)

GSL::Cdf::gaussian_Q(x, sigma = 1)

GSL::Cdf::gaussian_Pinv(P, sigma = 1)

GSL::Cdf::gaussian_Qinv(Q, sigma = 1)

GSL::Cdf::ugaussian_P(x)

GSL::Cdf::ugaussian_Q(x)

GSL::Cdf::ugaussian_Pinv(P)

GSL::Cdf::ugaussian_Qinv(Q)
These methods compute the cumulative distribution functions P(x), Q(x) and their inverses for the Gaussian distribution with standard deviation
sigma
.
The Gaussian Tail Distribution¶ ↑

GSL::Rng#gaussian_tail(a, sigma = 1)

GSL::Ran#gaussian_tail(rng, a, sigma = 1)

GSL::Rng#ugaussian_tail(a)

GSL::Ran#ugaussian_tail(rng)
These methods provide random variates from the upper tail of a Gaussian distribution with standard deviation
sigma
. The values returned are larger than the lower limita
, which must be positive.

GSL::Ran::gaussian_tail_pdf(x, a, sigma = 1)

GSL::Ran::ugaussian_tail_pdf(x, a)
These methods compute the probability density p(x) at
x
for a Gaussian tail distribution with standard deviationsigma
and lower limita
.
The Bivariate Gaussian Distribution¶ ↑

GSL::Rng#bivariate_gaussian(sigma_x, sigma_y, rho)

GSL::Ran::bivariate_gaussian(rng, sigma_x, sigma_y, rho)
These methods generate a pair of correlated gaussian variates, with mean zero, correlation coefficient
rho
and standard deviationssigma_x
andsigma_y
in the x and y directions.

GSL::Ran::bivariate_gaussian_pdf(x, y, sigma_x, sigma_y, rho)
This method computes the probability density p(x,y) at
(x,y)
for a bivariate gaussian distribution with standard deviationssigma_x, sigma_y
and correlation coefficientrho
.
The Exponential Distribution¶ ↑

GSL::Rng#exponential(mu)

GSL::Ran::exponential(rng, mu)
These methods return a random variate from the exponential distribution with mean
mu
.

GSL::Ran::exponential_pdf(x, mu)
This method computes the probability density p(x) at
x
for an exponential distribution with meanmu
.

GSL::Cdf::exponential_P(x, mu)

GSL::Cdf::exponential_Q(x, mu)

GSL::Cdf::exponential_Pinv(P, mu)

GSL::Cdf::exponential_Qinv(Q, mu)
These methods compute the cumulative distribution functions P(x), Q(x) and their inverses for the exponential distribution with mean
mu
.
The Laplace Distribution¶ ↑

GSL::Rng#laplace(a)

GSL::Ran::laplace(rng, a)
These methods return a random variate from the Laplace distribution with width
a
.

GSL::Ran::laplace_pdf(x, a)
This method computes the probability density p(x) at
x
for a Laplace distribution with widtha
.

GSL::Cdf::laplace_P(x, a)

GSL::Cdf::laplace_Q(x, a)

GSL::Cdf::laplace_Pinv(P, a)

GSL::Cdf::laplace_Qinv(Q, a)
These methods compute the cumulative distribution functions P(x), Q(x) and their inverses for the Laplace distribution with width
a
.

GSL::Rng#exppow(a, b)

GSL::Rng#cauchy(a)

GSL::Rng#rayleigh(sigma)

GSL::Rng#rayleigh_tail(a, sigma)

GSL::Rng#landau()

GSL::Rng#levy(c, alpha)

GSL::Rng#levy_skew(c, alpha, beta)

GSL::Rng#gamma(a, b)

GSL::Rng#flat(a, b)

GSL::Rng#lognormal(zeta, sigma)

GSL::Rng#chisq(nu)

GSL::Rng#fdist(nu1, nu2)

GSL::Rng#tdist(nu)

GSL::Rng#beta(a, b)

GSL::Rng#logistic(a)

GSL::Rng#pareto(a, b)
…
and more, see the GSL reference.
Shuffling and Sampling¶ ↑

GSL::Rng#shuffle(v, n)
This randomly shuffles the order of
n
objects, stored in the GSL::Vector objectv
.

GSL::Rng#choose(v, k)
This returns a GSL::Vector object with
k
objects taken randomly from the GSL::Vector objectv
.The objects are sampled without replacement, thus each object can only appear once in the returned vector. It is required that
k
be less than or equal to the length of the vectorv
.

GSL::Rng#sample(v, k)
This method is like the method
choose
but samplesk
items from the original vectorv
with replacement, so the same object can appear more than once in the output sequence. There is no requirement thatk
be less than the length ofv
.