Chapter 18: Random Number Generation

RNGAM

Generates pseudorandom numbers from a standard gamma distribution.

Required Arguments

A — The shape parameter of the gamma distribution.   (Input)
This parameter must be positive.

R — Vector of length NR containing the random standard gamma deviates.   (Output)

Optional Arguments

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

FORTRAN 90 Interface

Generic:                              CALL RNGAM (A, R [,…])

Specific:                             The specific interface names are S_RNGAM and D_RNGAM.

FORTRAN 77 Interface

Single:                                CALL RNGAM (NR, A, R)

Double:                              The double precision name is DRNGAM.

Description

Routine RNGAM generates pseudorandom numbers from a gamma distribution with shape parameter a and unit scale parameter. The probability density function is

Various computational algorithms are used depending on the value of the shape parameter a. For the special case of a = 0.5, squared and halved normal deviates are used; and for the special case of a = 1.0, exponential deviates (from IMSL routine RNEXP) are used. Otherwise, if a is less than 1.0, an acceptance-rejection method due to Ahrens, described in Ahrens and Dieter (1974), is used; if a is greater than 1.0, a ten-region rejection procedure developed by Schmeiser and Lal (1980) is used.

Deviates from the two-parameter gamma distribution with shape parameter a and scale parameter b can be generated by using RNGAM and then multiplying each entry in R by b. The following statements (in single precision) would yield random deviates from a gamma (a, b) distribution.

CALL RNGAM (NR, A, R)

CALL SSCAL (NR, B, R, 1)

The Erlang distribution is a standard gamma distribution with the shape parameter having a value equal to a positive integer; hence, RNGAM generates pseudorandom deviates from an Erlang distribution with no modifications required.

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, RNGAM is used to generate five pseudorandom deviates from a gamma (Erlang) distribution with shape parameter equal to 3.0.

 

      USE RNGAM_INT

      USE UMACH_INT

      USE RNSET_INT

 

      IMPLICIT   NONE

      INTEGER    NR

      PARAMETER  (NR=5)

!

      INTEGER    ISEED, NOUT

      REAL       A, R(NR)

!

      CALL UMACH (2, NOUT)

      A     = 3.0

      ISEED = 123457

      CALL RNSET (ISEED)

      CALL RNGAM (A, R)

      WRITE (NOUT,99999) R

99999 FORMAT ('  Gamma(3) random deviates: ', 5F8.4)

      END

Output

 

Gamma(3) random deviates:   6.8428  3.4452  1.8535  3.9992  0.7794



http://www.vni.com/
PHONE: 713.784.3131
FAX:713.781.9260