Trailing-Edge
-
PDP-10 Archives
-
decus_20tap2_198111
-
decus/20-0073/randu.for
There is 1 other file named randu.for in the archive. Click here to see a list.
C
C ..................................................................
C
C SUBROUTINE RANDU
C
C PURPOSE
C COMPUTES UNIFORMLY DISTRIBUTED RANDOM REAL NUMBERS BETWEEN
C 0 AND 1.0 AND RANDOM INTEGERS BETWEEN ZERO AND
C 2**35. EACH ENTRY USES AS INPUT AN INTEGER RANDOM NUMBER
C AND PRODUCES A NEW INTEGER AND REAL RANDOM NUMBER.
C
C USAGE
C CALL RANDU(IX,IY,YFL)
C
C DESCRIPTION OF PARAMETERS
C IX - FOR THE FIRST ENTRY THIS MUST CONTAIN ANY ODD INTEGER
C NUMBER WITH NINE OR LESS DIGITS. AFTER THE FIRST ENTRY,
C IX SHOULD BE THE PREVIOUS VALUE OF IY COMPUTED BY THIS
C SUBROUTINE.
C IY - A RESULTANT INTEGER RANDOM NUMBER REQUIRED FOR THE NEXT
C ENTRY TO THIS SUBROUTINE. THE RANGE OF THIS NUMBER IS
C BETWEEN ZERO AND 2**35
C YFL- THE RESULTANT UNIFORMLY DISTRIBUTED, FLOATING POINT,
C RANDOM NUMBER IN THE RANGE 0 TO 1.0
C
C REMARKS
C THIS SUBROUTINE IS SPECIFIC TO SYSTEM/10 AND WILL PRODUCE R
C 2**33 TERMS BEFORE REPEATING. THE REFERENCE BELOW DISCUSSES
C SEEDS (65539 HERE), RUN PROBLEMS, AND PROBLEMS CONCERNING
C RANDOM DIGITS USING THIS GENERATION SCHEME. MACLAREN AND
C MARSAGLIA, JACM 12, P. 83-89, DISCUSS CONGRUENTIAL
C GENERATION METHODS AND TESTS. THE USE OF TWO GENERATORS OF
C THE RANDU TYPE, ONE FILLING A TABLE AND ONE PICKING FROM THE
C TABLE, IS OF BENEFIT IN SOME CASES. 65549 HAS BEEN
C SUGGESTED AS A SEED WHICH HAS BETTER STATISTICAL PROPERTIES
C FOR HIGH ORDER BITS OF THE GENERATED DEVIATE.
C SEEDS SHOULD BE CHOSEN IN ACCORDANCE WITH THE DISCUSSION
C GIVEN IN THE REFERENCE BELOW. ALSO, IT SHOULD BE NOTED THAT
C IF FLOATING POINT RANDOM NUMBERS ARE DESIRED,AS ARE
C AVAILABLE FROM RANDU, THE RANDOM CHARACTERISTICS OF THE
C FLOATING POINT DEVIATES ARE MODIFIED AND IN FACT THESE
C DEVIATES HAVE HIGH PROBABILITY OF HAVING A TRAILING LOW
C ORDER ZERO BIT IN THEIR FRACTIONAL PART.
C
C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
C NONE
C
C ..................................................................
C
SUBROUTINE RANDU(IX,IY,YFL)
IY = IX*263159
IF(IY)5,6,6
5 IY = IY+2147483647+1
6 YFL=IY
YFL = YFL*.2910383E-10
RETURN
END