## 9.3.128 RANDU (I1, I2, X)

 Description: Computes a pseudorandom number as a single-precision value. Class: Subroutine Arguments: I1, I2 INTEGER(2) variables or array elements that contain the seed for computing the random number. These values are updated during the computation so that they contain the updated seed. X A REAL(4) variable or array element where the computed random number is returned. Results: The result is returned in X, which must be of type REAL(4). 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`.

Examples

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.