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/(THETA1 ‑ THETA2).
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 θ1 or 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