1
0
mirror of https://github.com/retro-software/B5500-software.git synced 2026-03-02 17:44:40 +00:00
Files
Paul Kimpel 2c72f7fd1d Commit CUBE Library version 13 of February 1972.
1. Commit library tape images, directories, and extracted text files.
2. Commit additional utilities under Unisys-Emode-Tools.
2018-05-27 11:24:23 -07:00

134 lines
10 KiB
Plaintext

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