my-server
← Wiki Redirected from Pseudo-random number sampling

Non-uniform random variate generation

Non-uniform random variate generation or pseudo-random number sampling is the numerical practice of generating pseudo-random numbers (PRN) that follow a given probability distribution. Methods are typically based on the availability of a uniformly distributed PRN generator. Computational algorithms are then used to manipulate a single random variate, X, or often several such variates, into a new random variate Y such that these values have the required distribution. The first methods were developed for Monte-Carlo simulations in the Manhattan Project, published by John von Neumann in the early 1950s.

Finite discrete distributions

For a discrete probability distribution with a finite number n of indices at which the probability mass function f takes non-zero values, the basic sampling algorithm is straightforward. The interval <nowiki>[</nowiki>0,&nbsp;1<nowiki>)</nowiki> is divided in n intervals [0,&nbsp;f(1)), [f(1),&nbsp;f(1)&nbsp;+&nbsp;f(2)),&nbsp;... The width of interval i equals the probability&nbsp;f(i). One draws a uniformly distributed pseudo-random number X, and searches for the index i of the corresponding interval. The so determined i will have the distribution&nbsp;f(i).

Formalizing this idea becomes easier by using the cumulative distribution function

It is convenient to set F(0)&nbsp;=&nbsp;0. The n intervals are then simply [F(0),&nbsp;F(1)), [F(1),&nbsp;F(2)), ..., [F(n&nbsp;&minus;&nbsp;1),&nbsp;F(n)). The main computational task is then to determine i for which F(i&nbsp;&minus;&nbsp;1)&nbsp;≤&nbsp;X&nbsp;<&nbsp;F(i).

This can be done by different algorithms:

  • Linear search, computational time linear in&nbsp;n.
  • Binary search, computational time goes with&nbsp;log&nbsp;n.
  • Indexed search, also called the cutpoint method.
  • Alias method, computational time is constant, using some pre-computed tables.
  • There are other methods that cost constant time.

Continuous distributions

Generic methods for generating independent samples:

Generic methods for generating correlated samples (often necessary for unusually-shaped or high-dimensional distributions):

For generating a normal distribution:

For generating a Poisson distribution:

Software libraries

See also

Footnotes

Literature