Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-02 - decus/20-0026/randu.ibm
There are 2 other files named randu.ibm in the archive. Click here to see a list.
C                                                                       RAND  10
C     ..................................................................RAND  20
C                                                                       RAND  30
C        SUBROUTINE RANDU                                               RAND  40
C                                                                       RAND  50
C        PURPOSE                                                        RAND  60
C           COMPUTES UNIFORMLY DISTRIBUTED RANDOM REAL NUMBERS BETWEEN  RAND  70
C           0 AND 1.0 AND RANDOM INTEGERS BETWEEN ZERO AND              RAND  80
C           2**31. EACH ENTRY USES AS INPUT AN INTEGER RANDOM NUMBER    RAND  90
C           AND PRODUCES A NEW INTEGER AND REAL RANDOM NUMBER.          RAND 100
C                                                                       RAND 110
C        USAGE                                                          RAND 120
C           CALL RANDU(IX,IY,YFL)                                       RAND 130
C                                                                       RAND 140
C        DESCRIPTION OF PARAMETERS                                      RAND 150
C           IX - FOR THE FIRST ENTRY THIS MUST CONTAIN ANY ODD INTEGER  RAND 160
C                NUMBER WITH NINE OR LESS DIGITS. AFTER THE FIRST ENTRY,RAND 170
C                IX SHOULD BE THE PREVIOUS VALUE OF IY COMPUTED BY THIS RAND 180
C                SUBROUTINE.                                            RAND 190
C           IY - A RESULTANT INTEGER RANDOM NUMBER REQUIRED FOR THE NEXTRAND 200
C                ENTRY TO THIS SUBROUTINE. THE RANGE OF THIS NUMBER IS  RAND 210
C                BETWEEN ZERO AND 2**31                                 RAND 220
C           YFL- THE RESULTANT UNIFORMLY DISTRIBUTED, FLOATING POINT,   RAND 230
C                RANDOM NUMBER IN THE RANGE 0 TO 1.0                    RAND 240
C                                                                       RAND 250
C        REMARKS                                                        RAND 260
C           THIS SUBROUTINE IS SPECIFIC TO SYSTEM/360 AND WILL PRODUCE  RAND 270
C           2**29 TERMS BEFORE REPEATING.  THE REFERENCE BELOW DISCUSSESRAND 280
C           SEEDS (65539 HERE), RUN PROBLEMS, AND PROBLEMS CONCERNING   RAND 290
C           RANDOM DIGITS USING THIS GENERATION SCHEME.  MACLAREN AND   RAND 300
C           MARSAGLIA, JACM 12, P. 83-89, DISCUSS CONGRUENTIAL          RAND 310
C           GENERATION METHODS AND TESTS.  THE USE OF TWO GENERATORS OF RAND 320
C           THE RANDU TYPE, ONE FILLING A TABLE AND ONE PICKING FROM THERAND 330
C           TABLE, IS OF BENEFIT IN SOME CASES.  65549 HAS BEEN         RAND 340
C           SUGGESTED AS A SEED WHICH HAS BETTER STATISTICAL PROPERTIES RAND 350
C           FOR HIGH ORDER BITS OF THE GENERATED DEVIATE.               RAND 360
C           SEEDS SHOULD BE CHOSEN IN ACCORDANCE WITH THE DISCUSSION    RAND 370
C           GIVEN IN THE REFERENCE BELOW.  ALSO, IT SHOULD BE NOTED THATRAND 380
C           IF FLOATING POINT RANDOM NUMBERS ARE DESIRED,AS ARE         RAND 390
C           AVAILABLE FROM RANDU, THE RANDOM CHARACTERISTICS OF THE     RAND 400
C           FLOATING POINT DEVIATES ARE MODIFIED AND IN FACT THESE      RAND 410
C           DEVIATES HAVE HIGH PROBABILITY OF HAVING A TRAILING LOW     RAND 420
C           ORDER ZERO BIT IN THEIR FRACTIONAL PART.                    RAND 430
C                                                                       RAND 440
C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED                  RAND 450
C           NONE                                                        RAND 460
C                                                                       RAND 470
C        METHOD                                                         RAND 480
C           POWER RESIDUE METHOD DISCUSSED IN IBM MANUAL C20-8011,      RAND 490
C           RANDOM NUMBER GENERATION AND TESTING                        RAND 500
C                                                                       RAND 510
C     ..................................................................RAND 520
C                                                                       RAND 530
      SUBROUTINE RANDU(IX,IY,YFL)                                       RAND 540
      IY=IX*65539                                                       RAND 550
      IF(IY)5,6,6                                                       RAND 560
    5 IY=IY+2147483647+1                                                RAND 570
    6 YFL=IY                                                            RAND 580
      YFL=YFL*.4656613E-9                                               RAND 590
      RETURN                                                            RAND 600
      END                                                               RAND 610