Numerical evaluation of a multi-stream pseudo-random number generator (Q1095562)

From MaRDI portal
scientific article
Language Label Description Also known as
English
Numerical evaluation of a multi-stream pseudo-random number generator
scientific article

    Statements

    Numerical evaluation of a multi-stream pseudo-random number generator (English)
    0 references
    0 references
    0 references
    1987
    0 references
    The intent is to have a Fortran subprogram for successive generation of 50 independent sequences of uniformly distributed random numbers. The presented choice for the basic sequence is Lehmer's multiplicative iteration congruent to a prime: the eighth Mersenne prime \(2^{31}-1\) and the fixed multiplier 16807; this sequence used for all 50 sequences, which start at equidistant positions of 100.000 values apart. Two subprograms are presented, one for initialisation, one for successive generation of any one of these sequences. Three more subprograms are presented for testing a) uniformity of 300 different segments of the sequence; b) uniformity within \(R^ n\), when every n successive values are considered as n-vectors; c) compliance to expected covariance of a true uniform variate for up and down runs of lengths 1 to 5 and more than 5. The choice of equidistant parts of one and the same basic sequence makes the 50 sequences vulnerable to contorted covariance between the sequences, when used in synchronous fashion; this bias is not tested or analyzed. Reviewer's remarks: In the generator program Fig. 2 line 41 the addition \(+IQVFLQ\) is to be deleted (and the lines 33..36 too), if conformance with the first formula p. 219 - as given by Lehmer - is wanted; insofar there is doubt which algorithm actually has been used for the tests. The comment in line 14 should read I2E15 instead of 12E15. Subsumed is an object computer with 31 bit size for positive integers, and a Fortran compiler for integer products and intermediate results restricted to the same size. This makes the generator program awkward and time consuming, caused by breaking the multiplication into two with 16 bit factors and need of seven (!) scaling multiplications and divisions - which a clever compiler might replace by binary shifts and masking. For this environment, a tailored machine coded subroutine should be preferred, which exploits the availability of double length products.
    0 references
    0 references
    0 references
    dynamic systems simulation language
    0 references
    computer simulation
    0 references
    multiple random number generation
    0 references
    test for randomness
    0 references
    Fortran subprogram
    0 references
    Lehmer's multiplicative iteration
    0 references