Intrinsic Subroutine (Specific): Computes a pseudorandom number as a single-precision value. Intrinsic subroutines cannot be passed as actual arguments.
Syntax
CALL RANDU (i1, i2, x)
i1, i2
(Input; output) Must be scalars of type INTEGER(2) or INTEGER(4). They contain the
seed for computing the random number. These values are updated during the computation
so that they contain the updated seed.
x
(Output) Must be a scalar of type REAL(4). This is where the
computed random number is returned.
The result value is a pseudorandom number in the range 0.0 to 1.0. The algorithm for computing the random number value is based on the values for i1 and i2.
If i1 = 0 and i2 = 0, the generator base is set as follows:
x(n + 1) = 2**16 + 3
Otherwise, it is set as follows:
x(n + 1) = (2**16 + 3) * x(n) mod 2**32
The generator base x(n + 1) is stored in i1, i2. The result is x(n + 1) scaled to a real value y(n + 1), for 0.0 <= y(n + 1) < 1.
Example
Consider the following:
REAL X
INTEGER(2) I, J
...
CALL RANDU (I, J, X)
If I and J are values 4 and 6, X stores the value 5.4932479E-04.