Generates pseudorandom numbers from a Poisson distribution.
#include <imsls.h>
int *imsls_random_poisson (int n_random, float theta, ..., 0)
int n_random
(Input)
Number of random numbers to generate.
float theta
(Input)
Mean of the Poisson distribution. Argument theta must be
positive.
An array of length n_random containing the random Poisson deviates.
#include <imsls.h>
int
*imsls_random_poisson (int
n_random, float
theta,
IMSLS_RETURN_USER, int
r[],
0)
IMSLS_RETURN_USER, int r[]
(Output)
User-supplied array of length n_random containing
the random Poisson deviates.
Function imsls_random_poisson generates pseudorandom numbers from a Poisson distribution with positive mean theta. The probability function (with θ = theta) is
If theta is less than 15, imsls_random_poisson uses an inverse CDF method; otherwise, the PTPE method of Schmeiser and Kachitvichyanukul (1981) (see also Schmeiser 1983) is used. The PTPE method uses a composition of four regions, a triangle, a parallelogram, and two negative exponentials. In each region except the triangle, acceptance/rejection is used. The execution time of the method is essentially insensitive to the mean of the Poisson.
Function imsls_random_seed_set can be used to initialize the seed of the random number generator; function imsls_random_option can be used to select the form of the generator.
In this example, imsls_random_poisson is used to generate five pseudorandom deviates from a Poisson distribution with mean equal to 0.5.
#include <imsls.h>
#define N_RANDOM 5
int main()
{
int *r;
int seed = 123457;
float theta = 0.5;
imsls_random_seed_set (seed);
r = imsls_random_poisson (N_RANDOM, theta, 0);
imsls_i_write_matrix ("Poisson(0.5) random deviates", 1, N_RANDOM, r, 0);
}
Poisson(0.5) random deviates
1 2 3 4 5
2 0 1 0 1