Generates pseudorandom numbers from a Poisson distribution.
THETA — Mean of
the Poisson distribution. (Input)
THETA must be
positive.
IR — Vector of length NR containing the random Poisson deviates. (Output)
NR — Number of
random numbers to generate. (Input)
Default: NR = size (IR,1).
Generic: CALL RNPOI (THETA, IR [,…])
Specific: The specific interface name is S_RNPOI.
Single: CALL RNPOI (NR, THETA, IR)
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.
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.
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
Poisson(0.5) random deviates: 2 0 1 0 1
PHONE: 713.784.3131 FAX:713.781.9260 |