Parallel generators of random numbers on geometrical structures
OwnerNaoya NAKAZAWA, Hiroshi NAKAZAWAinventors
Life of this patent
Estimating the term…
Abstract
A method for realization of samples of random numbers distributed on temporal and spatial lattice points is described. The method may include using samples obtained by integrating a temporal and spatial white noise over the temporally smallest unit and over the spatial unit of volume, with the distribution of samples. The method may ensure small correlations to neighboring samples in temporal as well as spatial directions.
Claims1
A method to realize a set of multiplicative congruential (MC) random numbers on geometrical lattice structures in such a way as to ensure little correlations among random numbers with neighboring coordinates, comprising:
- the method first prepares an integer lattice GN
- GN:={(I1,I2, . . . ,IN)|Ik is an integer, 0≤Ik≤Mk−1, 1≤k≤N},
- in the rectangular parallelepiped M1×M2× . . . ×MN for integers {Mk≥1|1≤k≤N} in the N-dimensional Euclidean space EN with N≥1,
- the method takes a MC generator (d, z, s) for uniform and independent random numbers constituted by the integer modulus d, the integer multiplier z coprime to d and the integer seed (or the starting value) s coprime to d, the generator (d, z, s) emitting an excellent sequence S of random numbers of period T, the excellence of S being in the sense that MC generators (d, zk) for exponents from k=1 to k=6 show valuations 1<μd(2)(zk)<1.25 in (generalized) 2nd degree spectral tests and that (d, z) shows valuations 1<μd(L)(z)<1.25 in L-th degree spectral tests with regular-simplex criteria for degrees L=3 up to (at least) L=4 or 5, and the method that then divides S into Ω consecutive threads of a unanimous length M with Ω≥M1×M2× . . . ×MN and MΩ<T,
- and the method tunes integers M, M1, M2, . . . , MN−1 to their appropriate values by consecutive steps (1) to (N) of spectral tests noted below;
- (1) the first step tunes the length of threads by increasing M to M′:=M+1, M+2, . . . until the procedure realizes that
- ζ′:≡ẑM′(mod d)
- gives (d, (ζ′)k) passing the (generalized) 2nd degree spectral test with the valuation in the range 1<μd(2)((ζ′)k)<1.25 for 1≤k≤6, and gives (d, ζ′) passing the degree L spectral test for regular L-simplex criterion starting from L=3 up to L=4, desirably up to L=5 or 6 within the valuation 1<μd(L)(ζ′)<1.25;
- (2) the 2nd step tunes the width M1 of the rectangular parallelepiped by increasing it to M1′:=M1+1, M1+2, . . . until it realizes that
- ζ1′:≡ẑ(M′M1′)(mod d)
- gives (d, (ζ1′)k) passing the (generalized) 2nd degree spectral test with the valuation in the range 1<μd(2)((ζ1′)k)<1.25 for 1≤k≤6, and gives (d, ζ1′) passing the degree L spectral test for regular L-simplex criterion starting from L=3 up to L=4, desirably up to L=5 or 6 within the valuation 1<μd(L)(ζ1′)<1.25;
- (3) the 3rd step tunes the width M2 of the rectangular parallelepiped by increasing it to M2′:=M2+1, M2+2, . . . until it realizes that
- (ζ2)′:≡ẑ(M′M1′M2′)(mod d)
- gives (d, (ζ2′)k) passing the (generalized) 2nd degree spectral test with the valuation in the range 1<μd(2)((ζ2′)k)<1.25 for 1≤k≤6, and gives (d, ζ2′) passes the degree L spectral test for regular L-simplex criterion starting from L=3 up to L=4, desirably up to L=5 or 6 within the valuation 1<μd(L)(ζ2′)<1.25;
- . . .
- (N) the N-th step tunes the width MN−1 of the rectangular parallelepiped by increasing it to MN−1′:
- =MN−1+1, MN−1+2, . . . until it realize that
- ζN−1′:≡ẑ(M′M1′M2′ . . . MN−1′)(mod d)
- gives (d, (ζN−1′)k) passing the (generalized) 2nd degree spectral test giving the valuation in the range 1<μd(2)((ζN−1)′}k)<1.25 for 1≤k≤6, and gives (d, ζN−1′) passing the degree L spectral test for regular L-simplex criterion starting from L=3 up to L=4, desirably up to L=5 or 6 within the valuation 1<μd(L)(ζN−1′)<1.25;
- and in the case that all tunings noted above fulfill T≥M′M1′M2′ . . . MN−1′MN the method finally defines the expanded integer lattice GN′
- GN′:≡{(I1,I2, . . . ,IN)|0≤Ik≤Mk′−1,k=1,2, . . . ,N−1,0≤IN≤MN−1},
- and defines an array of seeds ARRAY(I1, I2, . . . , IN) on GN′ and let the set of threads of (d, z) random numbers start on these seeds, the distribution of seeds being realized in the way to obtain small correlation between random numbers generated at geometrical neighbors, the distribution being described by simple operations in FORTRAN subprogram shown below with notations MPK for Mk′,
- SBROUTINE SEEDER(D, Z, S, MP, MP1, MP2, MP3, ..., MN)
- INTEGER*8 A-Z
- COMMON ARRAY(0:MP1−1, 0:MP2−1, ..., 0:MN−1)
- COUNT = 0
- SEED = 1
- CALL POWER(ZETA, D, Z, MP)
- ! POWER is a subroutine to compute ZETA = MOD(Z**MP, D)
- ! with 1 ≤ZETA < D for the index MP that can be very large
- DO 10 IN = 0, MN − 1
- .........................................................
- DO 10 I3 = 0, MP3 − 1
- DO 10 I2 = 0, MP2 − 1
- DO 10 I1 = 0, MP1 − 1
- ARRAY(I1, I2, I3, ..., IN) = SEED
- SEED = MOD(SEED*ZETA, D)
- ! this SEED may be computed within INTEGER*8 arithmetic
- ! by Sun Tzu's theorem if D = D1*D2 is a product of coprime factors
- COUNT=COUNT+1
- 10 CONTINUE
- WRITE(6, ‘I20’) COUNT
- RETURN
- END
- wherein COUNT is the flag to confirm that all seeds are distributed;
- from {M′, M_1′, M_2′, . . . M_N} thus constructed and reserved in the binary expansion or in more effective form, the simulation starts by preparing first to generate ARRAY from them, or the simulation starts by reading the data of ARRAY from HD, SSD, USB into the main memory, or the simulation starts by utilizing the ARRAY equipped in some standardized form in the function libraries of computer centers, or the simulation or the game starts utilizing the ARRAY installed in some standardized form in operating systems as one of their services on computers or in portable phones.
Dependencies are inferred from the claim text.