Chapter 18: Random Number Generation

RNEXT

Generates pseudorandom numbers from a mixture of two exponential distributions.

Required Arguments

THETA1 —  Mean of the exponential distribution that has the larger mean.   (Input)

THETA2 — Mean of the exponential distribution that has the smaller mean.   (Input)
THETA2 must be positive and less than or equal to THETA1.

P — Mixing parameter.   (Input)
P must be nonnegative and less than or equal to THETA1/(THETA1THETA2).

R — Vector of length NR containing the random deviates from a mixture of exponentials.   (Output)

Optional Arguments

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

FORTRAN 90 Interface

Generic:                              CALL RNEXT (THETA1, THETA2, P, R [,…])

Specific:                             The specific interface names are S_RNEXT and D_RNEXT.

FORTRAN 77 Interface

Single:                                CALL RNEXT (NR, THETA1, THETA2, P, R)

Double:                              The double precision name is DRNEXT.

Description

Routine RNEXT generates pseudorandom numbers from a mixture of two exponential distributions. The probability density function is

where p = P, θ1 = THETA1, and θ2 = THETA2.

In the case of a convex mixture, that is, the case 0 < p < 1, the mixing parameter p is interpretable as a probability; and RNEXT with probability p generates an exponential deviate with mean θ1, and with probability 1 − p generates an exponential with mean θ2. When p is greater than 1, but less than θ1/(θ1 θ2), then either an exponential deviate with mean θ1or the sum of two exponentials with means θ1 and θ2 is generated. The probabilities are
q = p − (p −1)θ1/θ2 and 1 − q, respectively, for the single exponential and the sum of the two exponentials.

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, RNEXT is used to generate five pseudorandom deviates from a mixture of exponentials with means 2 and 1, respectively, and with mixing parameter 0.5.

 

      USE RNEXT_INT

      USE UMACH_INT

      USE RNSET_INT

   

      IMPLICIT   NONE

      INTEGER    ISEED, NOUT, NR

      REAL       P, R(5), THETA1, THETA2

!

      CALL UMACH (2, NOUT)

      THETA1 = 2.0

      THETA2 = 1.0

      P      = 0.5

      NR     = 5

      ISEED  = 123457

      CALL RNSET (ISEED)

      CALL RNEXT (THETA1, THETA2, P, R)

      WRITE (NOUT,99999) R

99999 FORMAT (' Random deviates from a mixture of exponentials: ', /, &

            5X, 5F8.4)

      END

Output

 

Random deviates from a mixture of exponentials:

      0.0700  1.3024  0.6301  1.9756  0.3716



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