Convolution random number generator

In statistics and computer software, a convolution random number generator is a pseudo-random number sampling method that can be used to generate random variates from certain classes of probability distribution. The particular advantage of this type of approach is that it allows advantage to be taken of existing software for generating random variates from other, usually non-uniform, distributions. However, faster algorithms may be obtainable for the same distributions by other more complicated approaches.

A number of distributions can be expressed in terms of the (possibly weighted) sum of two or more random variables from other distributions. (The distribution of the sum is the convolution of the distributions of the individual random variables).

Example
Consider the problem of generating a random variable with an Erlang distribution, $$X\ \sim \operatorname{Erlang}(k, \theta)$$. Such a random variable can be defined as the sum of k random variables each with an exponential distribution $$\operatorname{Exp}(k \theta) \,$$. This problem is equivalent to generating a random number for a special case of the Gamma distribution, in which the shape parameter takes an integer value.

Notice that:


 * $$\operatorname{E}[X] = \frac{1}{k \theta} + \frac{1}{k \theta} + \cdots + \frac{1}{k \theta} = \frac{1}{\theta} .$$

One can now generate $$\operatorname{Erlang}(k, \theta)$$ samples using a random number generator for the exponential distribution:

if $$X_i\ \sim \operatorname{Exp}(k \theta)$$   then $$X=\sum_{i=1}^k X_i \sim \operatorname{Erlang}(k,\theta) .$$