gsl-random-0.4.3: Bindings the the GSL random number generation facilities.

Stability experimental Patrick Perry

GSL.Random.Dist

Description

Random number distributions. Functions for generating random variates and computing their probability distributions.

Synopsis

# The Gaussian Distribution

## General

gaussianPdf x sigma computes the probabililty density p(x) for a Gaussian distribution with mean 0 and standard deviation sigma.

gaussianP x sigma computes the cumulative distribution function P(x) for a Gaussian distribution with mean 0 and standard deviation sigma.

gaussianQ x sigma computes the cumulative distribution function Q(x) for a Gaussian distribution with mean 0 and standard deviation sigma.

gaussianPInv p sigma computes the inverse of the cumulative distribution function of a Gaussian distribution with mean 0 and standard deviation sigma. It returns x such that P(x) = p.

gaussianPInv q sigma computes the inverse of the cumulative distribution function of a Gaussian distribution with mean 0 and standard deviation sigma. It returns x such that Q(x) = q.

getGaussian r sigma gets a normal random variable with mean 0 and standard deviation sigma. This uses the Box-Mueller algorithm.

getGaussianZiggurat r sigma gets a normal random variable with mean 0 and standard deviation sigma. This uses the Marsaglia-Tsang ziggurat algorithm.

getGaussianRatioMethod r sigma gets a normal random variable with mean 0 and standard deviation sigma. This uses the Kinderman-Monahan-Leva ratio method.

## Unit Variance

ugaussianPdf x computes the probabililty density p(x) for a Gaussian distribution with mean 0 and standard deviation 1.

ugaussianP x computes the cumulative distribution function P(x) for a Gaussian distribution with mean 0 and standard deviation 1.

ugaussianQ x computes the cumulative distribution function Q(x) for a Gaussian distribution with mean 0 and standard deviation 1.

ugaussianPInv p computes the inverse of the cumulative distribution function of a Gaussian distribution with mean 0 and standard deviation 1. It returns x such that P(x) = p.

ugaussianPInv q computes the inverse of the cumulative distribution function of a Gaussian distribution with mean 0 and standard deviation 1. It returns x such that Q(x) = q.

getUGaussian r gets a normal random variable with mean 0 and standard deviation 1. This uses the Box-Mueller algorithm.

getUGaussianRatioMethod r gets a normal random variable with mean 0 and standard deviation 1. This uses the Kinderman-Monahan-Leva ratio method.

# The Flat (Uniform) Distribution

flatPdf x a b computes the probability density p(x) at x for a uniform distribution from a to b.

flatP x a b computes the cumulative distribution function P(x).

flatQ x a b computes the cumulative distribution function Q(x).

flatPInv p a b computes the inverse of the cumulative distribution and returns x so that function P(x) = p.

flatQInv q a b computes the inverse of the cumulative distribution and returns x so that function Q(x) = q.

getFlat r a b gets a value uniformly chosen in [a,b).

# The Exponential Distribution

exponentialPdf x mu computes the density at x of an exponential with mean mu.

getExponential r mu gets a random exponential with mean mu.

# The Levy alpha-Stable Distributions

getLevy r c alpha gets a variate from the Levy symmetric stable distribution with scale c and exponent alpha. The algorithm only works for 0 <= alpha <= 2.

getLevySkew r c alpha beta gets a variate from the Levy skew stable distribution with scale c, exponent alpha, and skewness parameter beta. The skewness parameter must lie in the range [-1,1]. The algorithm only works for 0 <= alpha <= 2.

# The Poisson Distribution

poissonPdf k mu evaluates the probability density p(k) at k for a Poisson distribution with mean mu.

poissonP k mu evaluates the cumulative distribution function P(k) at k for a Poisson distribution with mean mu.

poissonQ k mu evaluates the cumulative distribution function Q(k) at k for a Poisson distribution with mean mu.

getPoisson r mu gets a poisson random variable with mean mu.

# The Cauchy Distribution

getCauchy r a gets a random cauchy with scale a.

cauchyPdf x a evaluates the probability density p(x) at x for a Cauchy distribution with scale parameter a. The density is given by p(x) dx = { 1 over api (1 + (x/a^2)) } dx.

# The Beta Distribution

getBeta r a b gets a random beta with parameters a and b.

betaPdf x a b evaluates the probability density p(x) at x for a Beta distribution with parameters a and b. The density is given by p(x) dx = {Gamma(a+b) over Gamma(a) Gamma(b)} x^{a-1} (1-x)^{b-1} dx for 0 <= x <= 1.

# The Logistic Distribution

getLogistic r a gets a random logistic with scale a.

logisticPdf x a evaluates the probability density p(x) at x for a logistic distribution with scale parameter a. The density is given by p(x) dx = { exp(-xa) \over a (1 + \exp(-xa))^2 } dx.

# The Pareto Distribution

getPareto r a b gets a random Pareto with exponent a and scale b.

paretoPdf x a b evaluates the probability density p(x) at x for a Pareto distribution with exponent a and scale b. The density is given by p(x) dx = (ab) (x/b)^{a+1} dx for x >= b.

# The Weibull Distribution

getWeibull r a b gets a random Weibull with scale a and exponent b.

weibullPdf x a b evaluates the probability density p(x) at x for a Weibull distribution with scale a and exponent b. The density is given by p(x) dx = {b over a^b} x^{b-1} exp(-(x/a)^b) dx for x >= 0.

# The Gamma Distribution

getGamma r a b gets a random gamma with parameters a and b. Uses the Marsagli-Tsang fast gamma method.

getGammaKnuth r a b gets a random gamma with parameters a and b. Uses the algorithms from Knuth (vol 2).

gammaPdf x a b evaluates the probability density p(x) at x for a gamma distribution with parameters a and b. The density is given by p(x) dx = p(x) dx = {1 over Gamma(a) b^a} x^{a-1} e^{-x/b} dx for x > 0.

# The Multinomial Distribution

getMultinomial r n ps gets a random sample from a multinomial distribution with parameters ps formed by n trials.

Arguments

 :: Vector Int ns -> Vector Double ps -> Double

multinomialPdf ns ps evaluates the probability density p(ns) at ns for a multinomial distribution with parameters ps, where all ps are non-negative and sum to 1. Note that xs and alphas should have the same length.

Arguments

 :: Vector Int ns -> Vector Double ps -> Double

multinomialLnPdf xs alphas == log (multinomialPdf xs alphas), but more efficient.

# The Dirichlet Distribution

getDirichlet r alphas gets a random sample from a Dirichlet distribution with parameters alphas, where all alphas are positive.

Arguments

 :: Vector Double xs -> Vector Double alphas -> Double

dirichletPdf xs alphas evaluates the probability density p(xs) at xs for a Dirichlet distribution with parameters alphas, where all alphas are positive (strictly greater than zero). Note that xs and alphas should have the same length.

Arguments

 :: Vector Double xs -> Vector Double alphas -> Double

dirichletLnPdf xs alphas == log (dirichletPdf xs alphas), but more efficient.