Generates pseudorandom numbers from a geometric distribution.
P — Probability
of success on each trial. (Input)
P must be positive and
less than 1.0.
IR — Vector of length NR containing the random geometric deviates. (Output)
NR — Number of
random numbers to generate. (Input)
Default: NR = size (IR,1).
Generic: CALL RNGEO (P, IR [,…])
Specific: The specific interface name is S_RNGEO.
Single: CALL RNGEO (NR, P, IR)
Routine RNGEO generates pseudorandom numbers from a geometric distribution with parameter P, where P is the probability of getting a success on any trial. A geometric deviate can be interpreted as the number of trials until the first success (including the trial in which the first success is obtained). The probability function is
f(x) = P(1 − P)x−1
for x = 1, 2, … and 0 < P < 1
The geometric distribution as defined above has mean 1/P.
The i-th geometric deviate is generated as the smallest integer not less than log(Ui)/log(1 − P ), where the Ui are independent uniform (0, 1) random numbers (see Knuth, 1981).
The geometric distribution is often defined on 0, 1, 2, …, with mean (1 − P)/P. Such deviates can be obtained by subtracting 1 from each element of IR.
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, RNGEO is used to generate five pseudorandom deviates from a geometric distribution with parameter P equal to 0.3.
USE RNGEO_INT
USE UMACH_INT
USE RNSET_INT
IMPLICIT NONE
INTEGER NR
PARAMETER (NR=5)
!
INTEGER IR(NR), ISEED, NOUT
REAL P
!
CALL UMACH (2, NOUT)
P = 0.3
ISEED = 123457
CALL RNSET (ISEED)
CALL RNGEO (P, IR)
WRITE (NOUT,99999) IR
99999 FORMAT (' Geometric(0.3) random deviates: ', 5I8)
END
Geometric(0.3) random deviates: 1 4 1 2 1
PHONE: 713.784.3131 FAX:713.781.9260 |