mirror of
https://github.com/retro-software/B5500-software.git
synced 2026-03-02 17:44:40 +00:00
1. Commit library tape images, directories, and extracted text files. 2. Commit additional utilities under Unisys-Emode-Tools.
134 lines
10 KiB
Plaintext
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
|