Elsevier Science Home
Computer Physics Communications Program Library
Full text online from Science Direct
Programs in Physics & Physical Chemistry
CPC Home

[Licence| Download | New Version Template] aaxi_v1_0.gz(12 Kbytes)
Manuscript Title: A shift-register sequence random number generator implemented on the microcomputers with 8088/8086 and 8087.
Authors: T.-W. Chiu, T.-S. Guu
Program title: TRCG
Catalogue identifier: AAXI_v1_0
Distribution format: gz
Journal reference: Comput. Phys. Commun. 47(1987)129
Programming language: 8086 Assembly Language, Pascal.
Computer: IBM-PC/XT/AT.
Operating system: PC (MS) DOS 2.0 OR LATER.
Word size: 16
Keywords: General purpose, Statistical methods, Monte-Carlo simulation, Uniform random number generator, Stochastic quantization, Lattice field theories, Spin models.
Classification: 4.13.

Other versions:
Cat Id Title Reference
ACLW_v1_0 RANTAUMAR CPC 75(1993)105
ACLW_v2_0 RANTAUMAR2 CPC 78(1993)172
ACLW_v3_0 RANSAL CPC 81(1994)237

Nature of problem:
The subroutines generate a sequence of uniformly distributed real and integer pseudo random numbers with the maximum period of 2**250 - 1. They can be used in Monte Carlo simulations of many different physical problems.

Unusual features:
The program generates the pseudo random numbers using the Tausworth's shift register sequence algorithm, which has a very long maximum period. In our programs, we choose the maximum period to be 2**250-1. However, the period can be easily programmed to be much longer.

Running time:
The actual running time depends on the system clock of the microcomputer as well as the compiler used. For a IBM-PC compatible with 4.77MHz CPU 8088/8087 and test program compiled by the TURBO-87 PASCAL, the speeds of the single precision subroutines and functions are:
(i) The seeding subroutine (SEED) takes 53 msec.
(ii) The uniform real number generator (TRCG) generates 4140 uniformly distributed random numbers in the interval [0,1] within one second.
(iii) The integer random number generator (ITRCG) generates 6350 random integers in one second.