BEGIN 00000100 COMMENT PROCEDURE - RANDOM, 00000200 CUBE LIBRARY NUMBER IS V100001. 00000300 THIS VERSION DATED 6/20/67; 00000400 COMMENT 00000500 "RANDOM" 00000600 00000700 DISCLAIMER 00000800 DISCLAIMER: THE AUTHORS OF THIS PROGRAM, THE CUBE ORGANIZATION, 00000900 AND THE BURROUGHS CORPORATION, BELIEVE THIS PROGRAM MATERIAL 00001000 TO BE CORRECT, HOWEVER, THEY BEAR NO RESPONSIBILITY, 00001100 FINANCIAL OR OTHERWISE, FOR ERROR RESULTING FROM ITS USE, NOR 00001200 ACCEPT ANY RESPONSIBILITY FOR ITS MAINTENANCE. 00001300 00001400 AUTHOR 00001500 WM. A. WULF UNIVERSITY OF VIRGINIA 00001600 00001700 ABSTRACT 00001800 THE PROGRAM GENERATES A PSEUDO-RANDOM SEQUENCE OVER AN INTERVAL C{X{D 00001900 WHERE C AND D ARE SPECIFIED IN THE CALL. 00002000 00002100 SYSTEM 00002200 MINIMUM B5000. 00002300 00002400 00002500 MATHEMATICAL DISCUSSION 00002600 00002700 THE SEQUENCE OF PSEUDO-RANDOM NUMBERS IS GENERATED BY NORMALIZING 00002800 00002900 X[I+1] = P|(X[I] MOD 2*A) 00003000 00003100 TO THE INTERVAL (C,D),WHERE A IS CHOSEN SUCH THAT 00003200 00003300 (P|2) < 2*39 < (P|2*(A+1)) 00003400 00003500 AND P IS CHOSEN FROM 00003600 00003700 P=8T-3 T=1,2,... 00003800 00003900 00004000 IN PARTICULAR FOR THIS PROCEDURE THE FOLLOWING CHOICES WERE MADE: 00004100 00004200 T=2 00004300 00004400 THUS P=13 00004500 AND A=35 00004600 00004700 THE VALUE OF X[0] IS AN INPUT PARAMETER. THE THEORETICAL BASIS FOR THESE00004800 CHOICES IS GIVEN IN "NUMERICAL METHODS FOR SCIENTISTS AND ENGINEERS", 00004900 BY HAMMING. 00005000 00005100 THE FOLLOWING TABLE SHOWS THE VALUES OF 00005200 X-BAR 00005300 AND (X*2)-BAR 00005400 FOR VARIOUS VALUES OF N AND X[0]. THE THEORETICAL 00005500 VALUES FOR THESE SHOULD BE .5 AND .3333... . 00005600 00005700 00005800 STARTING 00005900 CONSTANT N X-BAR (X*2)-BAR 00006000 -------- ----- ----------- -----------00006100 00006200 500 0.497882202 0.33285615200006300 13543288579 1000 0.494498538 0.32704795500006400 5000 0.499812258 0.33301384300006500 00006600 500 0.477618983 0.31145862200006700 24376589411 1000 0.488730932 0.32355101700006800 5000 0.501847597 0.33571464900006900 00007000 00007100 500 0.502539971 0.34503988500007200 34359738367 1000 0.503262243 0.34043405800007300 5000 0.507513557 0.34213742000007400 00007500 500 0.483932789 0.31383800200007600 11324679915 1000 0.494948306 0.32851833800007700 5000 0.498790265 0.33225082400007800 00007900 00008000 00008100 00008200 INSTRUCTIONS FOR USING "RANDOM" 00008300 00008400 00008500 THE REAL PROCEDURE RANDOM IS ENTERED WITH THREE PARAMETERS 00008600 FOR EXAMPLE: 00008700 R~RANDOM(A,B,C); 00008800 COMMENT 00008900 A AND B DEFINE THE UPPER AND LOWER BOUNDS OF THE INTERVAL. C SHOULD 00009000 EITHER BE ZERO OR AN ELEVEN DIGIT ODD INTEGER. WHEN C!0, THEN C IS 00009100 TAKEN TO BE X[0], AND THE VALUE OF RANDOM WILL BE P|(X[0]MOD 2*35) 00009200 NORMALIZED TO THE PROPER INTERVAL. WHEN C=0, THEN THE VALUE OF RANDOM 00009300 IS COMPUTED FROM P(X[I]MOD 2*35). 00009400 THUS WHEN RANDOM IS CALLED THE FIRST TIME IN A PROGRAM, C SHOULD 00009500 BE AN ELEVEN DIGIT ODD INTEGER. ON SUBSEQUENT CALLS C WILL PROBABLY 00009600 BE ZERO. 00009700 00009800 ************************************************************************00009900 00010000 00010100 ; 00010200 FILE OUT LP 1(1,15); 00010300 INTEGER I,J,N; 00010400 REAL SUM,SUMSQ,R; 00010500 FORMAT F(I13,X4,I5,2(X4,F8.3)); 00010600 00010700 00010800 REAL PROCEDURE RANDOM(A,B,START); 00010900 VALUE A,B,START; 00011000 REAL A,B; 00011100 INTEGER START; 00011200 BEGIN 00011300 OWN INTEGER X; 00011400 IF START!0 THEN X~START; 00011500 X~X.[13:35]; 00011600 X~X|13; 00011700 RANDOM~X/446676598784|(B-A)+A 00011800 END OF RANDOM; 00011900 FOR J~13543288579,24376589411,34359738367,11324679915 DO 00012000 FOR N~500,1000,5000 DO 00012100 BEGIN 00012200 SUM~SUMSQ~0; 00012300 00012400 R~RANDOM(0,1,J); 00012500 FOR I~1 STEP 1 UNTIL N DO 00012600 BEGIN 00012700 R~RANDOM(0,1,0); 00012800 SUM~SUM+R;SUMSQ~SUMSQ+R|R; 00012900 END SUM LOOP; 00013000 WRITE(LP,F,J,N,SUM/N,SUMSQ/N); 00013100 END OF N LOOP; 00013200 END. 00013300