Google
 

Trailing-Edge - PDP-10 Archives - decus_20tap5_198111 - decus/20-0150/taus.txt
There is 1 other file named taus.txt in the archive. Click here to see a list.
00100	        IMPROVED RANDOM NUMBER GENERATOR
00200	        
00300			   ABSTRACT
00400	
00500	IN 1968 MARSAGLIA [1]  PROVED THEORETICALLY THAT THE INDUSTRY
00600	STANDARD RANDOM NUMBER GENERATORS, BASED ON A MULTI-
00700	PLICATIVE CONGRUENTIAL PROCESS COULD NOT GIVE UNIFORM
00800	RANDOM DISTRIBUTION OF POINTS IN A CARTESIAN N-DIMEN-
00900	SIONAL SPACE FOR N > 1. GENERATORS BASED ON TAUSWORTHE'S [2]
01000	SEQUENCES DO NOT SUFFER THIS FAULT, PROVIDED THAT THE
01100	 DEGREE OF THE GENERATING POLYNOMIAL IS SUFFICIENTLY HIGH.
01200	 A PRIMITIVE POLYNOMIAL MODULO 2  OF DEGREE P WILL GENERATE
01300	POINTS IN N-SPACE UNIFORMLY TO PRECISION P/N.
01400	
01500	THE FOLLOWING SUBROUTINE GENERATES PSEUDORANDOM 36-BIT
01600	INTEGERS AND 27-BIT REALS IN )-1:+1( , AND N-TUPLES OF
01700	THESE ARE UNIFORMLY DISTRIBUTED IN N-SPACE, FOR N<=6.
01800	IF HALF INTEGERS ARE USED, A 12-SPACE CAN BE COVERED UNIFORMLY.
01900	
02000	THE 7-TERM LINEAR RECURRENCE RANDOMIZES THE SEQUENCE RAPIDLY 
02100	STARTING FROM ANY SEED. THE SEQUENCE HAS GOOD STABILITY: A SUB-
02200	SEQUENCE WITH BAD STATISTICS WILL BE BRIEF. GENERATORS 
02300	BASED ON PRIMITIVE TRINOMIALS ARE LESS STABLE: THEIR
02400	GENERATED SEQUENCES MAY CONTAIN LONG SUBSEQUENCES WITH
02500	VERY BAD STATISTICS. [3]
02600	
02700	THE PROCESS USES LOGICAL OPERATIONS IN FAST REGISTERS,
02800	NO MULTIPLICATION, AND IS THEREFORE FAST. IT USES LITTLE 
02900	MEMORY. THE MACRO ROUTINE IS CALLABLE IN FORTRAN AND SIMULA.
03000	
03100	1. MARSAGLIA, GEORGE. "RANDOM NUMBERS FALL MAINLY IN THE 
03200	   PLANES", PROC. NTL. ACAD. SCI. 61,1968, PP 25-28
03300	
03400	2. TAUSWORTHE, ROBERT. "RANDOM NUMBERS GENERATED BY LINEAR 
03500	   RECURRENCE MODULO 2", MATH. COMPUT., 19,1965, PP.201-209.
03600	
03700	3. DAYKIN, P. N. IN PREPARATION.