RNPOI

Generates pseudorandom numbers from a Poisson distribution.

Required Arguments

THETA — Mean of the Poisson distribution. (Input)
THETA must be positive.

IR — Vector of length NR containing the random Poisson deviates. (Output)

Optional Arguments

NR — Number of random numbers to generate. (Input)
Default: NR = size (IR,1).

FORTRAN 90 Interface

Generic: CALL RNPOI (THETA, IR [])

Specific: The specific interface name is S_RNPOI.

FORTRAN 77 Interface

Single: CALL RNPOI (NR, THETA, IR)

Description

Routine RNPOI generates pseudorandom numbers from a Poisson distribution with parameter THETA. THETA, which is the mean of the Poisson random variable, must be positive. The probability function (with θ = THETA) is

f(x) = e−θθx/x!

for x = 0, 1, 2, 

If THETA is less than 15, RNPOI 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.

Comments

The routine RNSET can be used to initialize the seed of the random number generator. The routine RNOPT can be used to select the form of the generator.

Example

In this example, RNPOI is used to generate five pseudorandom deviates from a Poisson distribution with mean equal to 0.5.

 

USE RNPOI_INT

USE UMACH_INT

USE RNSET_INT

 

IMPLICIT NONE

INTEGER NR

PARAMETER (NR=5)

!

INTEGER IR(NR), ISEED, NOUT

REAL THETA

!

CALL UMACH (2, NOUT)

THETA = 0.5

ISEED = 123457

CALL RNSET (ISEED)

CALL RNPOI (THETA, IR)

WRITE (NOUT,99999) IR

99999 FORMAT (' Poisson(0.5) random deviates: ', 5I8)

END

Output

 

Poisson(0.5) random deviates: 2 0 1 0 1