Numpy: Numpy рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП PCG рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг, рдЦрддрд░рдирд╛рдХ рдЖрддреНрдо-рд╕рд╣рд╕рдВрдмрдВрдз рд╣реИрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 20 рдордИ 2020  ┬╖  104рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: numpy/numpy

Numpy рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ PCG рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░рд╛рд╢рд┐ рдЖрддреНрдо-рд╕рд╣рд╕рдВрдмрдВрдз рд╣реИред рдпрд╣реА рд╣реИ, рдПрдХ рдмреАрдЬ рд╕реЗ рдЙрддреНрдкрдиреНрди рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрдХреНрд░рдо рдХреЗ рд▓рд┐рдП, рдЕрдиреНрдп рдмреАрдЬреЛрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рд╣рд╕рдВрдмрдВрдзрд┐рдд, рдиреЙрдирд╡рд░реНрд▓реЗрдкрд┐рдВрдЧ рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рд╣реИред "рд╕рд╣рд╕рдВрдмрджреНрдз" рд╕реЗ рдореЗрд░рд╛ рдЕрднрд┐рдкреНрд░рд╛рдп рд╣реИ рдХрд┐ рджреЛ рдРрд╕реЗ рдХреНрд░рдореЛрдВ рдХреЛ рд╕рдорд╛рд╣рд┐рдд рдХрд░рдирд╛ рдФрд░ рдЙрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЬреЛ рдЖрдкрдХреЛ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рдереЗред

рдЗрд╕ рдмрд╛рдд рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдХреЗ рдмрдбрд╝реЗ рд╕реЗрдЯ рд╕реЗ рдирд┐рдХрд▓рдиреЗ рд╡рд╛рд▓реЗ рджреЛ рдЬрдирд░реЗрдЯрд░ рдЙрди рдЕрдиреБрдХреНрд░рдореЛрдВ рдореЗрдВ рд╕реЗ рджреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдЕрдпреЛрдЧреНрдп рд╣реИрдВред рдЧрдгрд┐рддреАрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ рдпрд╣ рд╕рд░реНрд╡рд╡рд┐рджрд┐рдд рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдпрд╣рд╛рдБ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: http://prng.di.unimi.it/pcg.pgp ("рдПрдХ рд╣реА рдЬрдирд░реЗрдЯрд░ рдХреЗ рднреАрддрд░ рдкрд░рд┐рдгрд╛рдо" рджреЗрдЦреЗрдВ)ред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реАрдзреЗ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ Numpy рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдпрд╣ рд╕рд░рд▓ C рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрд╛: http://prng.di.unimi.it/intpcgnumpy.c ред рдХрд╛рд░реНрдпрдХреНрд░рдо рджреЛ рдЬрдирд░реЗрдЯрд░ рдХреЗ 128-рдмрд┐рдЯ рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рд▓реЗрддрд╛ рд╣реИ (рдПрдХ рд╣реА рдПрд▓рд╕реАрдЬреА рд╕реНрдерд┐рд░ рдпрд╛ "рд╕реНрдЯреНрд░реАрдо" рдХреЗ рд╕рд╛рде) рдЙрдЪреНрдЪ рдФрд░ рдирд┐рдореНрди рдмрд┐рдЯреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдЙрдирдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЗрдВрдЯрд░рд▓реЗрд╡ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрд╛рдЗрдирд░реА рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдо рдкреНрд░реИрдХреНрдЯреНрд░реЗрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рднреЗрдЬрддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдХреЛрдИ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд╡рд┐рдлрд▓рддрд╛ рдирд╣реАрдВ рджрд┐рдЦрдиреА рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рджреЛ рдзрд╛рд░рд╛рдПрдВ рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЕрдЧрд░ 64 рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рде рджреЛ рд░рд╛рдЬреНрдпреЛрдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рдорд┐рд▓рддрд╛ рд╣реИ:

ред stdbuf -oL ~ / svn / c / xorshift / practicerand / RNG_test stdin -tf 2 -te 1 -tlmaxonly -multithreaded
RNG_test рдкреНрд░реИрдХреНрдЯреНрд░реЗрдб рд╕рдВрд╕реНрдХрд░рдг 0.94 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ
RNG = RNG_stdin, рдмреАрдЬ = рдЕрдЬреНрдЮрд╛рдд
рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯ = рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд, рддрд╣ = рдЕрддрд┐рд░рд┐рдХреНрдд

rng=RNG_stdin, seed=unknown
length= 128 megabytes (2^27 bytes), time= 2.2 seconds
  Test Name                         Raw       Processed     Evaluation
  BCFN(0+0,13-2,T)                  R= +27.6  p =  1.0e-13    FAIL
  BCFN(0+1,13-2,T)                  R= +68.0  p =  2.3e-34    FAIL !!!
  BCFN(0+2,13-3,T)                  R= +90.8  p =  8.8e-43    FAIL !!!
  BCFN(0+3,13-3,T)                  R=+120.6  p =  6.9e-57    FAIL !!!!
  DC6-6x2Bytes-1                    R=  +8.9  p =  4.0e-5   mildly suspicious
  DC6-5x4Bytes-1                    R= +15.7  p =  4.3e-9   very suspicious
  [Low1/8]BCFN(0+0,13-4,T)          R= +11.6  p =  4.9e-5   unusual
  ...and 1074 test result(s) without anomalies

рдЖрдк рдХрдо рднреА рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдЖрдкрдХреЛ рдХреЗрд╡рд▓ 58 рдирд┐рдЪрд▓реЗ рдмрд┐рдЯреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

./intpcgnumpy 0x596d84dfefec2fc7 0x0579f81ab9f3e37b 0x8d7deae980a64ab0 0x6b79f81ab9f3e37b | stdbuf -oL ~/svn/c/xorshift/practrand/RNG_test stdin -tf 2 -te 1 -tlmaxonly -multithreaded

[...]
rng=RNG_stdin, seed=unknown
length= 32 gigabytes (2^35 bytes), time= 453 seconds
  Test Name                         Raw       Processed     Evaluation
  [Low1/16]FPF-14+6/32:cross        R= +11.6  p =  4.0e-10   VERY SUSPICIOUS
  [Low1/32]FPF-14+6/32:cross        R= +16.5  p =  3.2e-14    FAIL
  [Low1/32]FPF-14+6/16:cross        R= +12.8  p =  3.8e-11   VERY SUSPICIOUS
  [Low1/64]FPF-14+6/64:cross        R=  +6.8  p =  4.8e-6   mildly suspicious
  [Low1/64]FPF-14+6/32:cross        R=  +6.0  p =  1.9e-5   unusual
  [Low1/64]FPF-14+6/16:cross        R=  +5.5  p =  5.8e-5   unusual
  [Low4/32]FPF-14+6/64:all          R=  +5.8  p =  5.9e-5   unusual
  [Low4/32]FPF-14+6/32:(0,14-0)     R=  +7.7  p =  1.0e-6   unusual
  [Low4/32]FPF-14+6/32:(1,14-0)     R=  +7.7  p =  9.1e-7   unusual
  [Low4/32]FPF-14+6/32:all          R=  +6.5  p =  1.3e-5   unusual
  [Low4/64]FPF-14+6/64:all          R=  +5.9  p =  5.1e-5   unusual
  [Low4/64]FPF-14+6/64:cross        R=  +8.2  p =  3.0e-7   suspicious
  [Low4/64]FPF-14+6/32:(0,14-0)     R=  +7.6  p =  1.0e-6   unusual
  [Low8/64]FPF-14+6/64:(0,14-0)     R= +17.0  p =  2.2e-15    FAIL
  [Low8/64]FPF-14+6/64:(1,14-0)     R=  +9.1  p =  5.1e-8   mildly suspicious
  [Low8/64]FPF-14+6/64:all          R= +12.7  p =  2.1e-11   VERY SUSPICIOUS
  [Low8/64]FPF-14+6/32:(0,14-0)     R= +12.8  p =  1.7e-11   VERY SUSPICIOUS
  [Low8/64]FPF-14+6/32:all          R= +11.0  p =  9.3e-10   VERY SUSPICIOUS
  ...and 1696 test result(s) without anomalies

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ 50% рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рджреЛ рдЬрдирд░реЗрдЯрд░ рджреЛ рд╕рд╣рд╕рдВрдмрджреНрдз рдмреАрдЬ (рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрд░ рдЪреБрдиреЗ рдЧрдП) рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ (рдЬрдиреНрдорджрд┐рди рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕) рдкрд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд▓рдЧрднрдЧ рдЖрдзреЗ рдорд┐рд▓рд┐рдпрди рдЬрдирд░реЗрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдФрд░ рдЕрдЧрд░ рдЖрдк рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдареАрдХ рдЙрд╕реА рд░рд╛рдЬреНрдп рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдУрд╡рд░рд▓реИрдкрд┐рдВрдЧ рд╕рд╣рд╕рдВрдмрдВрдз рдЕрдиреБрдХреНрд░рдо рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдмрд╣реБрдд рдХрдо рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рд╕рд╛рд╣рд┐рддреНрдп рдХрд╛ рдХреЛрдИ рднреА рд╕рдордЭрджрд╛рд░ рдЬрдирдХ рдРрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░

рдХреГрдкрдпрд╛ рдХрдо рд╕реЗ рдХрдо рдХрд╣реАрдВ рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рджреЗрдВ рдХрд┐ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рдЯрд░реНрдорд┐рдирд▓реЛрдВ рдкрд░ рдпрд╛ рдЕрддреНрдпрдзрд┐рдХ рд╕рдорд╛рдирд╛рдВрддрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд╣реА рдЕрд▓рдЧ-рдЕрд▓рдЧ "рдзрд╛рд░рд╛рдУрдВ" рдХреЗ рд╕рд╛рде рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрд▓рд╕реАрдЬреА рджреНрд╡рд╛рд░рд╛ рдПрдбрд┐рдЯрд┐рд╡ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдмрджрд▓рддреЗ рд╣реБрдП рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХреНрд░рдо рд╕рднреА рдПрдХ рд╣реА рдореЛрдбреБрд▓реЛ рд╕рд╛рдЗрди рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рдПрдХ рдпреЛрдЬрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реЛрддреЗ рд╣реИрдВред рдЖрдк рдпрд╣рд╛рдБ рдХреБрдЫ рдЪрд░реНрдЪрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/rust-random/rand/issues/907 рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреА рдкреВрд░реА рдЧрдгрд┐рддреАрдп рдЪрд░реНрдЪрд╛ рдпрд╣рд╛рдБ: https://arxiv.org/abs/2001.05304 ред

рд╕рднреА 104 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@imneme , @bashtage , @rkern рдпрд╣рд╛рдВ рдХреЗ рдЕрдзрд┐рдХрд╛рд░реА рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рдкрд░ рдЖрдЧреЗ рдмрдврд╝ рдЪреБрдХреЗ рд╣реИрдВ рдФрд░ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдордиреЗ jumped рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ SeedSequence.spawn рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬрдм рд╣рдо рдПрдкреАрдЖрдИ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рдереЗ рддреЛ рдпрд╣ рдЪрд░реНрдЪрд╛ рдереАред рдХреГрдкрдпрд╛ рдпрд╣рд╛рдВ рд╕рд▓рд╛рд╣ рджреЗрдЦреЗрдВ https://numpy.org/devdocs/reference/random/parallel.html рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рд╕реБрдзрд╛рд░ рд╕реБрдЭрд╛рдПрдВред

@ рдордЯреНрдЯреАрдк рдХрд╛ рдЬрдВрдкрд┐рдВрдЧ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдереЛрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмреЗрд╣рддрд░ рдкреНрд░рд▓реЗрдЦрди рд╣рдореЗрд╢рд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред

рдореИрдВ рд╢рд╛рдпрдж AES-NI рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП AESCounter рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдпрд╛ рдЕрддреНрдпрдзрд┐рдХ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП SPECK128 ред

рд╡рд╣реА рдЕрд▓рдЧ-рдЕрд▓рдЧ "рдзрд╛рд░рд╛рдУрдВ" рдХреЗ рд╕рд╛рде рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрд▓рд╕реАрдЬреА рджреНрд╡рд╛рд░рд╛ рдПрдбрд┐рдЯрд┐рд╡ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдмрджрд▓рддреЗ рд╣реБрдП рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХреНрд░рдо рд╕рднреА рдПрдХ рд╣реА рдореЛрдбреБрд▓реЛ рд╕рд╛рдЗрди рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рдПрдХ рдпреЛрдЬрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реЛрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХреА рдорд╛рддреНрд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ рдПрдХ рд╣реА рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЛ рджреЛрд╣рд░рд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╣рдо рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд░рд╛рдЬреНрдп рдХреЛ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдореИрдВрдиреЗ рдЕрднреА рддрдХ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓рддрд╛ рдирд╣реАрдВ рджреЗрдЦреА рд╣реИред рдЕрдЧрд░ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХрд╛ рднреА рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЬрдиреНрдорджрд┐рди рдЯрдХреНрдХрд░ рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ред

https://gist.github.com/rkern/f46552e030e59b5f1ebbd3b3ec045759

тЭп ./pcg64_correlations.py --same-increment | stdbuf -oL ./RNG_test stdin64 -tf 2 -te 1 -tlmaxonly -multithreaded
0x56b35656ede2b560587e4251568a8fed
0x93526034ed105e9e587e4251568a8fed
[
    {
        "bit_generator": "PCG64",
        "state": {
            "state": 115244779949650410574112983538102603757,
            "inc": 137507567477557873606783385380908979143
        },
        "has_uint32": 0,
        "uinteger": 0
    },
    {
        "bit_generator": "PCG64",
        "state": {
            "state": 195824235027336627448689568147458133997,
            "inc": 137507567477557873606783385380908979143
        },
        "has_uint32": 0,
        "uinteger": 0
    }
]
RNG_test using PractRand version 0.93
RNG = RNG_stdin64, seed = 0x4bf19f7b
test set = expanded, folding = extra

rng=RNG_stdin64, seed=0x4bf19f7b
length= 128 megabytes (2^27 bytes), time= 3.0 seconds
  Test Name                         Raw       Processed     Evaluation
  BCFN_FF(2+0,13-3,T)               R= +59.9  p =  3.8e-28    FAIL !!!       
  BCFN_FF(2+1):freq                 R= +89.0  p~=   6e-18     FAIL !         
  BCFN_FF(2+2):freq                 R= +39.6  p~=   6e-18     FAIL !         
  BCFN_FF(2+3):freq                 R= +14.6  p~=   6e-18     FAIL !         
  BCFN_FF(2+4):freq                 R= +10.3  p~=   5e-11   very suspicious  
  DC6-9x1Bytes-1                    R=  +7.1  p =  5.6e-4   unusual          
  DC6-6x2Bytes-1                    R= +18.9  p =  1.0e-10   VERY SUSPICIOUS 
  DC6-5x4Bytes-1                    R= +11.2  p =  1.4e-6   suspicious       
  [Low4/16]BCFN_FF(2+0):freq        R= +19.5  p~=   6e-18     FAIL !         
  [Low4/16]FPF-14+6/16:all          R=  +5.6  p =  1.0e-4   unusual          
  [Low4/16]FPF-14+6/4:all           R=  +5.9  p =  4.6e-5   unusual          
  [Low4/32]BCFN_FF(2+0):freq        R=  +6.5  p~=   2e-5    unusual          
  [Low8/32]BCFN_FF(2+0):freq        R= +15.1  p~=   6e-18     FAIL !         
  [Low8/32]FPF-14+6/32:all          R=  +8.4  p =  2.5e-7   very suspicious  
  [Low8/32]FPF-14+6/32:all2         R=  +9.0  p =  7.8e-5   unusual          
  [Low8/32]FPF-14+6/16:(0,14-0)     R= +12.4  p =  4.5e-11   VERY SUSPICIOUS 
  [Low8/32]FPF-14+6/16:all          R= +15.5  p =  5.2e-14    FAIL           
  [Low8/32]FPF-14+6/16:all2         R= +41.4  p =  2.6e-16    FAIL !         
  [Low8/32]FPF-14+6/4:(0,14-0)      R=  +6.9  p =  5.9e-6   unusual          
  [Low8/32]FPF-14+6/4:all           R=  +7.9  p =  6.6e-7   suspicious       
  ...and 871 test result(s) without anomalies

рдареАрдХ рд╣реИ, рдореИрдВ рдлрд┐рд░ рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ред

рдПрд▓рд╕реАрдЬреА рдореЗрдВ рдкрд╛рд╡рд░-рдСрдл -2 рдорд╛рдкрд╛рдВрдХ рдХреЗ рд╕рд╛рде рдХрдИ рдзрд╛рд░рд╛рдПрдБ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдорд╛рдирд╛ рдХрд┐ рд╢реБрд░реБрдЖрддреА рджрд┐рдиреЛрдВ рдореЗрдВ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдкреБрд░рд╛рдиреЗ рдХрд╛рдЧрдЬрд╛рдд рд╣реИрдВ, рдЬреЛ рдЙрди "рдзрд╛рд░рд╛рдУрдВ" рдХреЗ рд╕рд╛рде рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рдХрд░рдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рджрд╢рдХреЛрдВ рд╕реЗ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рд╕реНрдерд┐рд░рд╛рдВрдХ рдмрджрд▓рдХрд░ рдЬреЛ рдкрд░рд┐рдХреНрд░рдорд╛ рдЖрдк рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рдПрдХ рд╣реА рдореЛрдбреБрд▓реЛ рд╣реИрдВ рдПрдХ рдпреЛрдЬрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдФрд░ рд╕рдВрднрд╡рддрдГ рдПрдХ рд╕рд╛рдЗрди рдЪреЗрдВрдЬ_ред рд╕рдмрд╕реЗ рджреВрд░ рдореИрдВ рдЗрд╕реЗ рдЯреНрд░реЗрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ

рдорд╛рд░реНрдХ рдЬреЗред рдбрд░реНрд╕реНрдЯ, рд╕рдорд╛рдирд╛рдВрддрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рд░реИрдЦрд┐рдХ рд╕рд░реНрд╡рд╛рдВрдЧрд╕рдо рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП,
1989 рд╢реАрддрдХрд╛рд▓реАрди рд╕рд┐рдореБрд▓реЗрд╢рди рд╕рдореНрдореЗрд▓рди рдХреА рдХрд╛рд░реНрдпрд╡рд╛рд╣реА, IEEE рдкреНрд░реЗрд╕, 1989, рдкреАрдкреАред 462-466ред

рддреЛ, рдореИрдВрдиреЗ рдПрдХ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрд╛ http://prng.di.unimi.it/corrpcgnumpy.c рдЬрд┐рд╕рдореЗрдВ рдЖрдк рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  • PRNG рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ред
  • рдПрдХ рдФрд░ PRNG рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ред
  • рдкрд╣рд▓реЗ PRNG рдХреЗ рд▓рд┐рдП рдПрдХ рдордирдорд╛рдирд╛ "рд╕реНрдЯреНрд░реАрдо рдирд┐рд░рдВрддрд░"ред
  • рджреВрд╕рд░реЗ PRNG рдХреЗ рд▓рд┐рдП рдПрдХ рдордирдорд╛рдирд╛ "рд╕реНрдЯреНрд░реАрдо рдирд┐рд░рдВрддрд░" (рд╡реЗ рджреЛрдиреЛрдВ рд╕рдорд╛рди рдпрд╛ рджреЛрдиреЛрдВ рд╡рд┐рд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП; рдпрд╣ рдкреНрд░рддрд┐рдмрдВрдз рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рд┐рдбрд▓рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред
  • рдирд┐рдЪрд▓реЗ рдмрд┐рдЯреНрд╕ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рд╕реЗ рд╣рдо рджреВрд╕рд░реЗ PRNG рдореЗрдВ рдкреНрд░рддрд┐рдХреВрд▓ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗ, рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ PRNG рдХреЗ рд╕рдорд╛рди рдмрд┐рдЯреНрд╕ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рджреВрд╕рд░реЗ PRNG рдХреЗ рд▓рд┐рдП рд╢реЗрд╖ рдмрд┐рдЯреНрд╕ рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рддреЛ рдпрд╣ _exactly_ рдкрд╣рд▓реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рд╕реЗрдЯрд┐рдВрдЧ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рд╕реНрдерд┐рд░рд╛рдВрдХ рднреА рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред

./corrpcgnumpy 0x596d84dfefec2fc7 0x6b79f81ab9f3e37b 0xac9c8abfcb89f65f 0xe42e8dff1c46de8b 0x8d7deae9efec2fc7 0x6b79f81ab9f3e37b 0x06e13e5e8c92c843 0xf92e8346feee7a21 56 | stdbuf -oL ~/svn/c/xorshift/practrand/RNG_test stdin -tf 2 -te 1 -tlmaxonly -multithreaded

rng=RNG_stdin, seed=unknown
length= 4 gigabytes (2^32 bytes), time= 113 seconds
  Test Name                         Raw       Processed     Evaluation
  [Low1/8]BCFN(0+0,13-1,T)          R= +27.2  p =  4.0e-14    FAIL
  [Low1/8]DC6-6x2Bytes-1            R= +10.9  p =  4.4e-6   suspicious
  [Low1/64]DC6-5x4Bytes-1           R=  -6.4  p =1-1.4e-4   unusual
  [Low8/64]FPF-14+6/64:(0,14-0)     R=  +8.4  p =  2.2e-7   mildly suspicious
  [Low8/64]FPF-14+6/64:all          R=  +8.7  p =  1.2e-7   suspicious
  [Low8/64]FPF-14+6/32:(0,14-0)     R= +10.2  p =  5.1e-9   suspicious
  [Low8/64]FPF-14+6/32:all          R=  +9.4  p =  2.7e-8   very suspicious
  [Low8/64]FPF-14+6/16:all          R=  +5.8  p =  6.4e-5   unusual
  ...and 1439 test result(s) without anomalies

рддреЛ рд╡рд╣рд╛рдБ _at рдХрдо рд╕реЗ рдХрдо 2 ^ 72 рд╕рд╣рд╕рдВрдмрджреНрдз рдЕрдиреБрд╡рд░реНрддреА рд╣реИрдВ, рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдк "рд╕реНрдЯреНрд░реАрдо рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯ" рдХрд╛ рдЪрдпрди рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕реА рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВред

рдФрд░ рд╣рдореЗрдВ рдЬрдирд░реЗрдЯрд░ рдХреЛ рд╕реБрд╕реНрдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рднрд▓реЗ рд╣реА рд╕рдЯреАрдХ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдХреЗ рдмрдЬрд╛рдп рдореИрдВ рдЧрдгрдирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рдпрд╛ рдмрд╛рдж рдореЗрдВ рдПрдХ рд░рд╛рдЬреНрдп рдХрд╛ рдереЛрдбрд╝рд╛ рд╕рд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд╕рд╣рд╕рдВрдмрдВрдз рд╡реИрд╕реЗ рднреА рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдЖрдк рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ, рдПрдХ рдмрд╛рд░ рдлрд┐рд░: рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рд╕рд╛рд╣рд┐рддреНрдп рдХреЗ рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ рдЖрдзреБрдирд┐рдХ рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рдпрд╣ рджреБрд░реНрд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реИ (рдмреЗрд╢рдХ, рдПрдХ рдкрд╛рд╡рд░-рдЯреВ рдПрд▓рд╕реАрдЬреА рдореЗрдВ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди, рднрдЧрд╡рд╛рди рдХреЗ рд▓рд┐рдП, рдпрд╣ _not_ рдПрдХ рдЖрдзреБрдирд┐рдХ рдЬрдирд░реЗрдЯрд░ рд╣реИ)ред

рдЗрд╕ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдореЗрдВ 2018 рд╕реЗ рд╕рдмрд╕реНрдЯрд┐рдпрд╛рдиреЛ рдХреЗ PCG рдХреА рдЖрд▓реЛрдЪрдирд╛ рдХреА рдЧрдИ рд╣реИред

рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдВрд╕реНрдХрд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмреАрдЬреЛрдВ рдХреЛ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдЖрдк рдХрд┐рд╕реА рднреА PRNG рдХреЗ "рдмреБрд░реЗ рджрд┐рдЦрдиреЗ" рд╡рд╛рд▓реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдкрдиреЗ рджрд╛рд╡реЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдкреАрд╕реАрдЬреА рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреАрд╕реАрдЬреА рдмрд╣реБрдд рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╣реИ - рдкреАрд╕реАрдЬреА рдХреА рдзрд╛рд░рд╛рдПрдВ рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрджрддрд░ рдирд╣реАрдВ рд╣реИрдВ, рдЬреЛ рдПрдХ рдФрд░ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдкреАрдЖрд░рдПрдирдЬреА рд╣реИред

рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЭреВрда рд╣реИред рдореБрдЭреЗ рдЧрд▓рдд рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП MRG32k3a рдпрд╛ xoshiro256 ++ рд╕реЗ рджреЛ рд╕рд╣рд╕рдВрдмрджреНрдз рдиреЙрдирд╡рд░реНрд▓реЗрдкрд┐рдВрдЧ рд╕реАрдХреНрд╡реЗрдВрд╕ рджрд┐рдЦрд╛рдПрдВред

рдореИрдВрдиреЗ рдХрднреА рднреА рдЧреИрд░-рдЕрддрд┐рд╡реНрдпрд╛рдкреА рдирд╣реАрдВ рдХрд╣рд╛ред рдореБрдЭреЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ xoshiro256 ++ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдкрд░реАрдХреНрд╖рдг рджрд┐рдЦрд╛рдПрдВред рдХрд┐ рджреЛ рдмреАрдЬ рдУрд╡рд░рд▓реИрдк рд╣реЛрдиреЗ рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдореЗрд░реЗ рдкрд╛рд╕ рдкреАрд╕реАрдЬреА рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╣реИ рдЬреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдП рдЧрдП "рд╕рд╣рд╕рдВрдмрдВрдз" рдореВрд▓ рд░реВрдк рд╕реЗ рдУрд╡рд░рд▓реИрдк рдХрд╛ рдПрдХ рд░реВрдк рд╣реИрдВред

рдореИрдВ FUD рдХреЛ "рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ" рдФрд░ "рдПрдХ рдлреЙрд░реНрдо" рдХреА рддрд░рд╣ рдирд╣реАрдВ рд▓рдбрд╝ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ http://prng.di.unimi.it/intpcgnumpy.c рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рд╢реБрд░реВ рдореЗрдВ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ PRNG рдХреЗ 10 рдмрд┐рд▓рд┐рдпрди рдмрд╛рд░ рдкреБрди: рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛ, рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рдП рд╕рдВрджреЗрд╢ рдпрджрд┐ рдЙрддреНрдкрдиреНрди рдЕрдиреБрдХреНрд░рдо рджреВрд╕рд░реЗ PRNG рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдЯреНрд░реЗрд╕ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реИрдХреНрдЯреНрд░реИрдВрдб рдореЗрдВ рдкрд╣рд▓реЗ 160GB рдбреЗрдЯрд╛ рдЧреИрд░-рдЕрддрд┐рд╡реНрдпрд╛рдкреА рдЕрдиреБрдХреНрд░рдореЛрдВ рд╕реЗ рдЖрддрд╛ рд╣реИ:

./intpcgnumpy 0x596d84dfefec2fc7 0x0579f81ab9f3e37b 0x8d7deae980a64ab0 0x6c79f81ab9f3e37b | stdbuf -oL ~/svn/c/xorshift/practrand/RNG_test stdin -tf 2 -te 1 -tlmaxonly -multithreaded
[...]
rng=RNG_stdin, seed=unknown
length= 64 gigabytes (2^36 bytes), time= 926 seconds
  Test Name                         Raw       Processed     Evaluation
  [Low1/8]FPF-14+6/64:(0,14-0)      R=  +8.8  p =  8.7e-8   mildly suspicious
  [Low1/8]FPF-14+6/64:all           R=  +6.3  p =  2.1e-5   unusual          
  [Low1/16]FPF-14+6/64:(0,14-0)     R=  +7.6  p =  1.1e-6   unusual          
  [Low1/16]FPF-14+6/64:(1,14-0)     R=  +8.3  p =  2.9e-7   mildly suspicious
  [Low1/16]FPF-14+6/64:all          R=  +8.0  p =  5.8e-7   suspicious       
  [Low1/16]FPF-14+6/32:all          R=  +7.1  p =  3.9e-6   mildly suspicious
  [Low1/64]FPF-14+6/32:cross        R=  +7.1  p =  2.6e-6   mildly suspicious
  [Low4/32]FPF-14+6/64:(0,14-0)     R= +13.5  p =  4.3e-12   VERY SUSPICIOUS 
  [Low4/32]FPF-14+6/64:all          R=  +9.0  p =  5.9e-8   very suspicious  
  [Low4/64]FPF-14+6/64:(0,14-0)     R= +11.4  p =  3.8e-10  very suspicious  
  [Low4/64]FPF-14+6/64:all          R=  +8.0  p =  5.3e-7   suspicious       
  [Low4/64]FPF-14+6/32:(0,14-0)     R= +10.3  p =  3.6e-9   suspicious       
  [Low4/64]FPF-14+6/32:all          R=  +6.1  p =  3.2e-5   unusual          
  [Low8/64]FPF-14+6/64:(0,14-0)     R= +18.6  p =  8.4e-17    FAIL           
  [Low8/64]FPF-14+6/64:(1,14-0)     R= +11.4  p =  3.9e-10  very suspicious  
  [Low8/64]FPF-14+6/64:(2,14-0)     R=  +8.3  p =  2.8e-7   mildly suspicious
  [Low8/64]FPF-14+6/64:all          R= +15.3  p =  6.9e-14    FAIL           
  [Low8/64]FPF-14+6/32:(0,14-0)     R=  +7.8  p =  7.1e-7   unusual          
  [Low8/64]FPF-14+6/32:(1,14-0)     R=  +7.2  p =  2.7e-6   unusual          
  [Low8/64]FPF-14+6/32:all          R=  +5.8  p =  6.9e-5   unusual          
  ...and 1786 test result(s) without anomalies

рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдбреЗрдЯрд╛ рдореЗрдВ рдХреЗрд╡рд▓ 56 рдирд┐рдЪрд▓реЗ рдмрд┐рдЯреНрд╕ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдЪреНрдЪрддрд░ рдмрд┐рдЯреНрд╕ рдХреЛ рдлрд╝реНрд▓рд┐рдк рдХрд░рдХреЗ 2 ^ 72 рд╕рд╣рд╕рдВрдмрджреНрдз рдЕрдиреБрдХреНрд░рдо рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд╡рд┐рдлрд▓рддрд╛рдПрдВ рд╕рд┐рд░реНрдл 64GB рдбреЗрдЯрд╛ рдХреЗ рдмрд╛рдж рд╣реЛрддреА рд╣реИрдВ, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рд╣рд╕рдВрдмрдВрдз рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд▓реИрдк рдЬрд┐рдореНрдореЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЕрдиреНрдп рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рдХреНрд╖рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде 64 рдЬреАрдмреА рд╕реЗ рдкрд╣рд▓реЗ рдУрд╡рд░рд▓реИрдк рд╣реЛрддрд╛ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ - рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдУрд╡рд░рд▓реИрдкрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ - рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрд╡рд╛рдВрдЫрдиреАрдп рдЖрдВрддрд░рд┐рдХ рд╕рд╣рд╕рдВрдмрдВрдз рд╣реИред

рдХреГрдкрдпрд╛ рдЖрдЪрд╛рд░ рд╕рдВрд╣рд┐рддрд╛ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░реЗрдВред рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ "рд╕рд╢рдХреНрдд, рд╕реНрд╡рд╛рдЧрдд, рдЕрдиреБрдХреВрд▓ рдФрд░ рдзреИрд░реНрдпрдкреВрд░реНрдг" рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ "рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЪреБрдиреЗ рдЧрдП рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВред рд╣рдо рдЕрдкрдиреЗ рд╕рдВрдЪрд╛рд░ рдореЗрдВ рд╕рд╛рд╡рдзрд╛рди рдФрд░ рд╕рдореНрдорд╛рдирдЬрдирдХ рд╣реИрдВ" рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред

рдореИрдВрдиреЗ рдХрднреА рднреА рдЧреИрд░-рдЕрддрд┐рд╡реНрдпрд╛рдкреА рдирд╣реАрдВ рдХрд╣рд╛ред рдореБрдЭреЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ xoshiro256 ++ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдкрд░реАрдХреНрд╖рдг рджрд┐рдЦрд╛рдПрдВред рдХрд┐ рджреЛ рдмреАрдЬ рдУрд╡рд░рд▓реИрдк рд╣реЛрдиреЗ рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВред

рдЦреИрд░, рдпрд╣ рддреБрдЪреНрдЫ рд╣реИ: рдзрд╛рд░рд╛ рдХреА рд▓рдВрдмрд╛рдИ, рдкреБрдирд░рд╛рд╡реГрддрд┐ рддрдп рдХрд░реЗрдВ, рдФрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рджреЛ рдзрд╛рд░рд╛рдПрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкрд╛рд░ рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВред рдпрд╣ рд╡рд╣реА рдХреЛрдб рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд╕рд╣рд╕рдВрдмрджреНрдз рдкреАрд╕реАрдЬреА рдзрд╛рд░рд╛рдУрдВ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдерд╛ http://prng.di.unimi.it/intpcgnumpy.c рдУрд╡рд░рд▓реИрдк рдирд╣реАрдВ рд╣реИред

рдЕрдкрдиреЗ рджрд╛рд╡реЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдкреАрд╕реАрдЬреА рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреАрд╕реАрдЬреА рдмрд╣реБрдд рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╣реИ - рдкреАрд╕реАрдЬреА рдХреА рдзрд╛рд░рд╛рдПрдВ рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрджрддрд░ рдирд╣реАрдВ рд╣реИрдВ, рдЬреЛ рдПрдХ рдФрд░ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдкреАрдЖрд░рдПрдирдЬреА рд╣реИред

рдЖрдИрдПрдордПрдЪ, рдкреАрд╕реАрдЬреА рдХреЗ рднреАрддрд░ рдЖрддреНрдо-рд╕рдВрдмрдВрдз рдмрд╣реБрдд рдЦрд░рд╛рдм рд╣реИред рдПрдбрд┐рдЯрд┐рд╡ рдЬреЗрдирд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдХрд┐ рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЬреЛ рдХрд┐ рдбрд░реНрд╕реНрдЯ рдХреЗ рдирд╛рдЯрдХреАрдп 1989 рдХреЗ рдПрд▓рд╕реАрдЬреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд╣реИред

рд▓реЗрдХрд┐рди рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рдХреА рдмрд╣реБрдд рд╣реА рдорд╛рдореВрд▓реА рд╕рдорд╕реНрдпрд╛рдПрдВ рдЬреНрдЮрд╛рдд рд╣реИрдВ, рдФрд░ рдЬреЗрдИрдкреА 356 рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реБрдП, рд╡рд┐рднрд╛рдЬрдирдХрд╛рд░реА рдЬрдирд░реЗрдЯрд░, рдПрд▓рдПрдХреНрд╕рдПрдо рдХреА рдПрдХ рдирдИ рд╢реНрд░реЗрдгреА рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рдпрд╣ рдкреАрд╕реАрдЬреА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдмрджрд▓рдиреЗ рдХрд╛ рд╕рдордп рд╣реЛрдЧрд╛, рд╡рд╣ рднреА рдХреБрдЫ рдХрдо рдЦрд╛рдорд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдеред

рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореБрджреНрджрд╛ рджреЛрдиреЛрдВ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд░рд╛рдЬреНрдп рдорд┐рд╢реНрд░рдг рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рд╣реИред рдпрджрд┐ рдЖрдк рдЙрди рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЗ рд░рд╛рдЬреНрдп рдХрд╛ рдмрд┐рдЯ _k_ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рд╡рд░реНрддрди рдмрд┐рдЯ _k_ рдХреЗ рдиреАрдЪреЗ рдХрднреА рднреА рдкреНрд░рдЪрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдПрдлрд╕реА-рд▓реАрдирд┐рдпрд░ рдЬреЗрдирд░реЗрдЯрд░, рд╕реАрдПрдордбрдмреНрд▓реНрдпреВрд╕реА рдЬрдирд░реЗрдЯрд░ рдЖрджрд┐ рдореЗрдВ рдкреНрд░рд╛рдЗрдо рдореЙрдбреБрд▓рд╕ рдХреЗ рд╕рд╛рде рдПрд▓рд╕реАрдЬреА рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЕрдиреНрдп рд╕рднреА рдЬреЗрдирд░реЗрдЯрд░ рдЕрдкрдиреЗ рд░рд╛рдЬреНрдп рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЬрд▓реНрджреА рдФрд░ рдЬреНрдпрд╛рджрд╛ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдорд┐рд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред

рдкреАрд╕реАрдЬреА рдФрд░ рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рд╕рдорд╛рдирддрд╛ рдПрдХ рд▓рд╛рд▓ рд╣реЗрд░рд┐рдВрдЧ рд╣реИред рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЬрдирд░реЗрдЯрд░ рд╣реИ, рдмрд╕ рдПрдбрд┐рдЯрд┐рд╡, рд▓реЗрдХрд┐рди рдЙрд╕рдХреЗ рдКрдкрд░ рдПрдХ рд╕реНрдХреНрд░рдмрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИ: рдпрд╣ Appleby рдХрд╛ 64-рдмрд┐рдЯ рдореБрд░рдореБрд░реИрд╢ 3 рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЕрдВрддрд┐рдо рд░реВрдк рд╣реИ, рдЬрд┐рд╕реЗ рдХрдИ рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ Stafford (http://zimbry.blogspot.com/2011/09/better-bit-mixing-improving-on.html) рджреНрд╡рд╛рд░рд╛ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ, рдФрд╕рдд рджрд░реНрдЬреЗ рдХрд╛ рд╣рд┐рдорд╕реНрдЦрд▓рди рдЧреБрдг рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдмрд┐рдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╕рднреА рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдлреИрд▓рддреЗ рд╣реИрдВред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рджрд┐рдЧреНрдЧрдЬреЛрдВ рдХреЗ рдХрдВрдзреЗ рдкрд░ рдЦрдбрд╝рд╛ рд╣реИред

рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрд▓рд╕реАрдЬреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреАрд╕реАрдЬреА рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рдПрдХ рд╣реА рдХрдореА-рдХреА-рдорд┐рд╢реНрд░рдг рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реНрдХреНрд░реИрдЪрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдХрд┐рд╕реА рднреА рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдпрд╛ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдЧрд╛рд░рдВрдЯреА рдХреЗ рдмрд┐рдирд╛ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рдЗрдХрдЯреНрдареЗ рдЕрдВрдХрдЧрдгрд┐рдд рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЕрдиреБрдХреНрд░рдо рд╣реИред рдпрджрд┐ рд╡реЗ рдЗрд╕ рддрдереНрдп рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрддреЗ рд╣реБрдП рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдереЗ рдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд LCG рдХреЗ рд╕рднреА рдЕрдиреБрдХреНрд░рдо рдПрдХ рд╣реА рдореЛрдбреНрдпреВрд▓реЛ рдПрдХ рдпреЛрдЬрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИ рдФрд░ рд╕рдВрднрд╡рддрдГ рдПрдХ рд╕рдВрдХреЗрдд рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ, рддреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред

рд▓реЗрдХрд┐рди рд▓реЗрдЦрдХ рдХреЛ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдЕрдВрджрд╛рдЬрд╛ рдирд╣реАрдВ рдерд╛ рдХрд┐ рдХреНрд░рдо рдЗрддрдиреА рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рд╕реЗ рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд▓реЗрдЧрд╛ред рдкреАрд╕реАрдЬреА рддрдХрдиреАрдХреА рд░рд┐рдкреЛрд░реНрдЯ (https://www.pcg-random.org/pdf/hmc-cs-2014-0905.pdf) рдХреА рдзрд╛рд░рд╛ 4.2.3 рдореЗрдВ рдЗрд╕ рдХрдерди рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

"рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдПрдХ рднрд┐рдиреНрди рдЕрдиреБрдХреНрд░рдо рдореЗрдВ _c_ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреНрд░рдорд┐рдХ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдЕрдкрдиреЗ рдЬреЛрдбрд╝реЗ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЕрдиреНрдп рдЕрдиреБрдХреНрд░рдо рдХреЗ рд╕рд╛рде рдЖрдо рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред"

рдпрд╣ рдкреНрд░рдорд╛рдг рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрдХреНрд░рдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд LCG рдХрдИ рд╕реНрдЯреНрд░реАрдо рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбрд░реНрд╕реНрдЯ рдХреЗ 1989 рдХреЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдо рдХрд╛рдЧрдЬ рдореЗрдВ рдХрд╣реАрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛, рдЙрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рднреА рдЕрдиреБрдХреНрд░рдо рд╕рдорд╛рди рд╣реИрдВ, рдПрдХ additive рдирд┐рд░рдВрддрд░ modulo рдФрд░ рд╕рдВрднрд╡рддрдГ рдПрдХ рд╕рдВрдХреЗрдд рдкрд░рд┐рд╡рд░реНрддрди (рдЕрдзрд┐рдХрддрдо рд╢рдХреНрддрд┐ рдХреЗ 2-рдорд╛рдкрд╛рдВрдХ рдХреЗ рд╕рд╛рде LCGs рдХреЗ рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдкреАрд╕реАрдЬреА рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ)ред

рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдбрд░реНрд╕реНрдЯ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЙрджреНрдзреГрдд рдирд╣реАрдВ рдХрд░рдирд╛ рдПрдХ _bona fide_ рдЧрд▓рддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд LCG рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрд╢реНрд╡рд╕реНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк "рд╕реНрдЯреНрд░реАрдо" рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рдЕрд░реНрдереЛрдВ рдореЗрдВ "рднрд┐рдиреНрди" рд╣реЛрддреЗ рд╣реИрдВ, рдЬрдм рд╡реЗ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдКрдкрд░ рд╣реИрдВред рдкреАрд╕реАрдЬреА рдЬреИрд╕реЗ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдж рдХреЗ рд▓рд┐рдП 2 ^ 72 рдЧреИрд░-рдЕрддрд┐рд╡реНрдпрд╛рдкреА, рд╕рд╣рд╕рдВрдмрджреНрдз рдЕрдиреБрд╡рд░реНрддреА рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЖрдк "рд╕реНрдЯреНрд░реАрдо" рдХреЛ рдмрджрд▓ рджреЗрдВред

рдЖрдкрдХреЗ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рдмрдХрд╛ рдзрдиреНрдпрд╡рд╛рджред рдлрд┐рд▓рд╣рд╛рд▓, рдореИрдВ "рдкреАрд╕реАрдЬреА рдЕрдЪреНрдЫрд╛ / рдмреБрд░рд╛" рдЬреИрд╕реЗ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдирд┐рд░реНрдгрдпреЛрдВ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реВрдВред рдХреГрдкрдпрд╛ рдРрд╕реА рдЪрд░реНрдЪрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдордВрдЪреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣рд╛рдБ рдСрди-рдЯреЙрдкрд┐рдХ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдХреМрди-рд╕рд╛ рд╕реБрд╕реНрд╡рд╛рджреБ рдХрд░реЗрдЧрд╛, рдФрд░ рд╡рд╣ рдЕрдВрддрд┐рдо рдирд┐рд░реНрдгрдп рдЦрд╕рдЦрд╕ тАЛтАЛрдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рд╣реИред рд╣рдо рдЙрд╕ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдк рд╕рднреА рдЗрд╕ рдЪрд░реНрдЪрд╛ рдореЗрдВ рд▓рд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдЕрдВрддрд┐рдо рдирд┐рд░реНрдгрдп рдХреЗ рдмрдЬрд╛рдп рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддрдереНрдпреЛрдВ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╛рддреНрд░рд╛рддреНрдордХ рдмрдпрд╛рдиреЛрдВ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдореБрдЭреЗ рдЙрд╕ рд╣реЗрдбрд░реВрдо рдХреА рдорд╛рддреНрд░рд╛ рдХрд╛ рдЕрдиреБрдорд╛рди рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИред рдпрджрд┐ рдореЗрд░реЗ рдкрд╣рд▓реЗ рдХреЗ рдирд┐рд░реНрдгрдп рдЧрд▓рдд рдереЗ, рддреЛ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЬрд▓реНрдж рд╣реА рдирд┐рд░реНрдгрдп рдХреЗ рд▓рд┐рдП рдХреВрдж рдЧрдпрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдлрд┐рд░ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реВрдВрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рджред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ 50% рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рджреЛ рдЬрдирд░реЗрдЯрд░ рджреЛ рд╕рд╣рд╕рдВрдмрджреНрдз рдмреАрдЬ (рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрд░ рдЪреБрдиреЗ рдЧрдП) рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ (рдЬрдиреНрдорджрд┐рди рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕) рдкрд░ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд▓рдЧрднрдЧ рдЖрдзреЗ рдорд┐рд▓рд┐рдпрди рдЬрдирд░реЗрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

@vigna рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдЗрд╕ рдЧрдгрдирд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВ? рдЬрдиреНрдорджрд┐рди рдХреА рдЯрдХреНрдХрд░ рдХреА рдЧрдгрдирд╛ рдЬреЛ рдореИрдВ рдкрд░рд┐рдЪрд┐рдд рд╣реВрдВ, рд╡рд╣ n - 2**(n/2) рдЯрдХреНрдХрд░ 2**19 , рдЗрд╕рд▓рд┐рдП рдЖрдк рджрд╛рд╡рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЦрддрд░рдирд╛рдХ рд╕рд╣рд╕рдВрдмрдВрдз рдирд┐рдЪрд▓реЗ рдмрд┐рдЯреНрд╕ рдореЗрдВ рд▓рдЧрднрдЧ 40-рдмрд┐рдЯ рдЯрдХреНрдХрд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╕рдмреВрдд рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рд╣реИред рдореИрдВрдиреЗ рдирд┐рдЪрд▓реЗ 40 рдмрд┐рдЯреНрд╕ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд░рджреНрдж рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░реИрдХреНрдЯреНрд░реИрдВрдб рдореЗрдВ 16 рдЯреАрдЖрдИрдмреА рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ 40-рдмрд┐рдЯ рдЯрдХреНрдХрд░ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓рддрд╛ рджреЗрдЦреА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреЗ рдЯреАрдЖрдИрдмреА рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛?

рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рд╕реЗ рдЯрдХрд░рд╛рд╡ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред "рдкреАрд╕реАрдЬреА рдзрд╛рд░рд╛рдУрдВ" рдХреЗ рдЧреБрдгреЛрдВ рдХреА рдЖрдЧреЗ рдХреА рдЪрд░реНрдЪрд╛ рдСрдл-рдЯреЙрдкрд┐рдХ рд╣реИред "рд▓реЗрдЦрдХ" рдкрд░ рдмрд╛рд░-рдмрд╛рд░ рд╣рдереМрдбрд╝рд╛ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╣рд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕ рдЪрд░реНрдЪрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣рдорд╛рд░реЗ

@imneme рдпрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ рдХреВрдж рдХреЗ рд╕рд╛рде рдореБрджреНрджреЛрдВ 2. рдХреА рдПрдХ рдмрдбрд╝реА рд╢рдХреНрддрд┐ рдХреА рдПрдХ рдмрд╣реБ рд╕реЗ рдЬрдм рдореИрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг PCG64 рдПрдХ рд╣реА рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдФрд░ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рдХрдо рд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ n рдмрд┐рдЯреНрд╕, рдЬреЛ рджреВрд░реА рдореИрдВ рджреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рд╡рд╣ 1 << n рдХреА рдПрдХ рдмрд╣реБ рд╣реИред рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдордЬрдмреВрдд DXSM рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рднреА рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИред рдореИрдВрдиреЗ PCG64DXSM рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╡реГрджреНрдзрд┐ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ 64-рдмрд┐рдЯреНрд╕ рд░рд╛рдЬреНрдп рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ 2 TiB рддрдХ рдмрдврд╝рд╛рддреЗ рд╣реИрдВред

рдареАрдХ рд╣реИ, рдпрд╣ рд╢рд░реНрдордирд╛рдХ рд╣реИ: рдпрд╣ рдЖрдзрд╛ _billion_ рдерд╛, рдЖрдзрд╛ _million_ рдирд╣реАрдВред рдПрдХ рдЕрдХреЗрд▓рд╛ рдЕрдХреНрд╖рд░ рдмрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рд▓рд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдкрд░реНрдЪреА рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВред

рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЬрд▓реНрджреА рдХрд╣рд╛, рдпрд╣ рдареАрдХ рд╡реИрд╕реА рд╣реА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рд╕реЗ рдЯрдХрд░рд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рд╕рд╣рд╕рдВрдмрджреНрдз рдЕрдиреБрд╡рд░реНрддреА рдХреЗ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдУрд╡рд░рд▓реИрдк рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рд╕рд╣рд╕рдВрдмрджреНрдз рдЕрдиреБрд╡рд░реНрддреА рдХреЗ рдмрд┐рдирд╛ PRNG рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕рд╣реА рдХрд╣рддреЗ рд╣реИрдВ, рдирд┐рд░реНрдгрдп рдХреЗрд╡рд▓ рдЖрдкрдХрд╛ рд╣реИред

рд╕реНрдХреНрд░реИрдЪрд┐рдВрдЧ рдлрдВрдХреНрд╢рди рдХреЛ рдареАрдХ рдХрд░рдирд╛ рддрд╛рдХрд┐ рдЗрд╕рдореЗрдВ рдмреЗрд╣рддрд░ рдорд┐рдХреНрд╕рд┐рдВрдЧ рдкреНрд░реЙрдкрд░реНрдЯреАрдЬ рд╣реЛрдВ рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ рд▓рдЧреЗрдВред

рдореЗрд░рд╛ рдкреЛрд╕реНрдЯ рд╕рд┐рд░реНрдл рдкреАрд╕реАрдЬреА рдФрд░ рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рдХреЗ рдмреАрдЪ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдЕрдВрддрд░ рдХрд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдкрд┐рдЫрд▓реЗ рдкреЛрд╕реНрдЯ рдореЗрдВ рджрд╛рд╡рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВ, рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рд╕рд╣реА рдХрдерди рд╣реИред рдЖрдк SplitMix рдХреЗ рд▓рд┐рдП http://prng.di.unimi.it/corrpcgnumpy.c рдЬреИрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗред

@ рдХреНрд░реЗрдВрдХ , рдЖрдкрдиреЗ рдкреВрдЫрд╛:

@imneme рдпрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ рдХреВрдж рдХреЗ рд╕рд╛рде рдореБрджреНрджреЛрдВ 2. рдХреА рдПрдХ рдмрдбрд╝реА рд╢рдХреНрддрд┐ рдХреА рдПрдХ рдмрд╣реБ рд╕реЗ рдЬрдм рдореИрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг PCG64 рдПрдХ рд╣реА рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдФрд░ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рдХрдо рд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ n рдмрд┐рдЯреНрд╕, рджреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдореИрдВ 1 << n рдХреА рдПрдХ рдмрд╣реБ рд╣реИред рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдордЬрдмреВрдд DXSM рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рднреА рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИред рдореИрдВрдиреЗ PCG64DXSM рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдмрд┐рдирд╛ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдФрд░ 64-рдмрд┐рдЯреНрд╕ рдХреЗ рд░рд╛рдЬреНрдп рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ 2 TiB рддрдХ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реИред

рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреЗ рдзрд╛рдЧреЗ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╣рд╛рдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╕реЗрдмреЗрд╕реНрдЯрд┐рдпрд╛рдиреЛ рдиреЗ рдЕрдкрдиреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХрд╣рд╛,

рд╕реНрдХреНрд░реИрдЪрд┐рдВрдЧ рдлрдВрдХреНрд╢рди рдХреЛ рдареАрдХ рдХрд░рдирд╛ рддрд╛рдХрд┐ рдЗрд╕рдореЗрдВ рдмреЗрд╣рддрд░ рдорд┐рдХреНрд╕рд┐рдВрдЧ рдкреНрд░реЙрдкрд░реНрдЯреАрдЬ рд╣реЛрдВ рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ рд▓рдЧреЗрдВред

XSL-RR рдЪреАрдЬреЛрдВ рдХреЗ рдХрдордЬреЛрд░ рдЕрдВрдд рдореЗрдВ рд╣реИред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдкреАрд╕реАрдЬреА рдкреЗрдкрд░ рд╕реЗ рджреЛрдиреЛрдВ рдореВрд▓ рдЖрд░рдПрдХреНрд╕рдПрд╕-рдПрдо рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди, рдФрд░ рдирдП рдбреАрдПрдХреНрд╕рдПрд╕рдПрдо рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рд╕реНрдХреНрд░реИрдЪрд┐рдВрдЧ рдХреЗ рддрд░реАрдХреЗ рд╕реЗ рдЕрдзрд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рдирд╣реАрдВ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред DXSM (рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рдЗрд╕ рдХрдорд┐рдЯ рдореЗрдВ PCG рд╕реНрд░реЛрдд рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛) рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ XSL-RR рд╕реЗ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рд▓реЗрдХрд┐рди рд╕рдорд╛рди рд╕рдордп рдкреНрд░рджрд░реНрд╢рди (cf, RXS-M, рдЬреЛ рдзреАрдорд╛ рд╣реИ) рд╣реИред рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рдбреАрдПрдХреНрд╕рдПрд╕рдПрдо рдХрд╛ рдХрд╛рдлреА рдХрдард┐рди рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди 67 рджрд┐рдиреЛрдВ рдХреЗ рд░рди рдореЗрдВ рд╣рдореЗрдВ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдкрд╛рд╡рд░ рдЖрдЙрдЯреЗрдЬ рдорд┐рд▓рд╛, рдЬрд┐рд╕рдиреЗ рд╕рд░реНрд╡рд░ (рдпреВрдкреАрдПрд╕ рдмреИрдЯрд░реА рдХреЛ рд╕реВрдЦрд╛) рд▓рд┐рдпрд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд░рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЙрд╕ рд╕рдордп рдпрд╣ рджреЛрдиреЛрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╕рд╛рдмрд┐рдд рд╣реБрдЖ рдерд╛ рдкрд░реАрдХреНрд╖рдг (128 рдЯреАрдмреА рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛) рдФрд░ 2 ^ 48 рдХреА рдХреВрдж (64 рдЯреАрдмреА рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ)ред

рдЕрдЧрд░, рдмрд┐рдирд╛ рдбреАрдПрдХреНрд╕рдПрд╕рдПрдо рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдП рднреА, рдЖрд░рдПрдХреНрд╕рдПрд╕-рдПрдо рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрд╛ рд╣реЛрдЧрд╛, рддреЛ рдПрдХ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХрднреА рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХрдордЬреЛрд░ рдПрдХреНрд╕рдПрд╕рдПрд▓рдЖрд░-рдЖрд░рдЖрд░ рдХреНрд░рдордЪрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рд╣реИ - рд╣рдореЗрд╢рд╛ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдмрд╣реБрдд рдордЬрдмреВрдд рдмрд┐рдЯ-рд╕реНрдХреНрд░реИрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рд╛рдЗрдХрд┐рд▓ рд╕реЗ рдЖрддрд╛ рд╣реИред рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЧрддрд┐ рдорд╛рдпрдиреЗ рд░рдЦрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣рд╛рдерд╛рдкрд╛рдИ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рдПрдХ рдРрд╕рд╛ рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ рд╕реЗрдмреЗрд╕реНрдЯрд┐рдпрд╛рдиреЛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ рдореЗрд░рд╛ рдмрд╣реБрдд рдЖрдо рд╣реИред рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рд▓рдВрдмреЗ рд╕реНрдерд╛рдкрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдзреБрдирд┐рдХ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдкрд░реАрдХреНрд╖рдгреЛрдВ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ LCGs, рдФрд░ рдорд╛рд░реНрд╕рд╛рдЧреНрд▓рд┐рдпрд╛ рдХреЗ XorShift LFSRs) рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕реЗ рднреБрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рдмрд┐рдВрдЧ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝реЗрдВред рд╣рдо рджреЛрдиреЛрдВ рдЙрд╕ рдЖрдЙрдЯрдкреБрдЯ рдлрдВрдХреНрд╢рди рдХреЛ рд╕рд╕реНрддрд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рджреЛрдиреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛-рдмрд╣реБрдд рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рд╣рдо рдЕрдкрдиреЗ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдореБрдЦреМрдЯрд╛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЙрдирдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд░реИрдЦрд┐рдХрддрд╛ рдХреЗ рдореБрджреНрджреЗ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ ред

рд▓реЗрдХрд┐рди рдХреБрдЫ рд╣рдж рддрдХ рд╣рд╛рд▓ рдХреЗ рдХрд╛рдореЛрдВ рдиреЗ рдореБрдЭреЗ рдмрд╣реБрдд рдкреНрд░рд╕рдиреНрди рдХрд┐рдпрд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдпрд╣ рднреА рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдПрд▓рдПрдлрдПрд╕рдЖрд░-рдЖрдзрд╛рд░рд┐рдд рдбрд┐рдЬрд╝рд╛рдЗрдиреЛрдВ рдореЗрдВ рд╣реИрдорд┐рдВрдЧ-рд╡реЗрдЯ рдЗрд╢реНрдпреВрдЬрд╝ (рдЦреБрдж рдХреА рдПрдХ рд▓рдВрдмреА рдЪрд┐рдВрддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реБрдП) рд╣реИрдВ рдЬреЛ рдХрд┐ рдЙрдирдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдлрдВрдХреНрд╢рдиреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЕрдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред рдЙрдирдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЬрдирд░реЗрдЯрд░ рдЙрдирдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреБрдЫ рд╣реИ, рд▓реЗрдХрд┐рди 2018 рдореЗрдВ рд╡рд╛рдкрд╕ рдЬрдм рдореИрдВ рдЙрдирдХреЗ рдирдП xoshiro PRNG рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рдерд╛ , рддреЛ рдпрд╣ рдореБрдЭреЗ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЕрдВрдбрд░рд▓рд╛рдЗрди рдЬрдирд░реЗрдЯрд░ рд╕реЗ рд╣реИрдорд┐рдВрдЧ-рд╡реЗрдЯ рдореБрджреНрджреЛрдВ рдиреЗ рдЕрдкрдиреЗ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рдмрдирд╛рдпрд╛ред рдЪреВрдВрдХрд┐ рд╡рд╣ рдПрдХ рдирдП рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде xoshiro рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЪрд╛рд▓ (рдЙрд╕рдиреЗ рдХреБрдЫ рдЕрдиреНрдп рдмрджрд▓рд╛рд╡ рднреА рдХрд┐рдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдпрд╣ рднреА рджреЛрд╣рд░рд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рджреНрд╡рд╛рд░рд╛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдП рдЧрдП рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ?)ред

рдЬреИрд╕рд╛ рдХрд┐ рдЙрдирдХреЗ рд╕рд╣рд╕рдВрдмрдВрдз рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП, 2018 рдореЗрдВ рдЬрдм рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкреАрд╕реАрдЬреА рдХреА рдЖрд▓реЛрдЪрдирд╛ рдХреА, рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рд╡рд┐рднрд┐рдиреНрди рдореБрджреНрджреЛрдВ (рдЬреИрд╕реЗ рд╡рдВрдЪрд┐рдд рдмреАрдЬрд╛рд░реЛрдкрдг, рдЖрджрд┐) рдХреЗ рд╕рд╛рде рд▓рд┐рдЦреЗ рдЧрдП рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢рд╛рдорд┐рд▓ рдереЗ, рдореИрдВрдиреЗ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд▓рд┐рдЦреА рдЬрд┐рд╕рдореЗрдВ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдерд╛ред рдЕрдиреНрдп рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд PRNGs рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рдореЗрдВ corrsplitmix2.c рдЬреЛ рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рдореЗрдВ рд╕рд╣рд╕рдВрдмрджреНрдз рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реЗрдмрд╕реНрдЯрд┐рдпрди рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ рдЬрдм рдЙрд╕рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдореБрдЭреЗ рдЙрд╕рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдХрд░реАрдм рд╕реЗ рджреЗрдЦрдиреЗ рдХрд╛ рдореМрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЙрд╕рдХрд╛ рдирдпрд╛ рд╡реНрдпрдХреНрддрд┐ рдЙрд╕рд╕реЗ рдЕрд▓рдЧ рд╣реИ? рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдерд╛ред

рдХреГрдкрдпрд╛ рдореЗрд░реА рд╕рдордЭ рдХреА рдХрдореА рдХреЛ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ - рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдореИрдВ рдХрд┐рд╕реА рд╕реЗ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ? рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреАрд╕реАрдЬреА рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ? рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рддрд░реНрдХ рд╣реИрдВ?

рдЖрд╕рд╛рди рд░рд╛рд╕реНрддрд╛ рдЙрдЪреНрдЪ (рдЕрд▓реНрдЯреНрд░рд╛-рд╣рд╛рдИ?) -рдбрд┐рдореЗрдВрд╢рдирд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рд╕рд╣рд╕рдВрдмрджреНрдз рдЕрдиреБрдХреНрд░рдо рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдкреНрд░рд▓реЗрдЦрди рдЬреЛрдбрд╝рдирд╛ рд╣реИред

рдПрдХ рдХрдард┐рди рд░рд╛рд╕реНрддрд╛ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ рдЬреЛ рд╕реНрдЯреНрд░реАрдо рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ рд╡рд╛рджрд╛ default_rng рдХрд┐рддрдирд╛ рдордЬрдмреВрдд рд╣реИред рдбреЙрдХреНрд╕ рдиреЗ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рджреА рд╣реИ рдХрд┐ рдпрд╣ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡рддрдГ рдПрдХ рдЕрдкрдЪрдпрди рдЪрдХреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕рдХреЗ рд▓рд┐рдП рдирдП рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдмрд┐рдЯ рдЬрдирд░реЗрдЯрд░ (рдпрд╛ рдкреАрд╕реАрдЬреА 64 рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп, рдЬреЛ рдЕрдзрд┐рдХ рд╕рдордЭрджрд╛рд░ рд╣реЛрдЧрд╛) рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдФрд░ рдлрд┐рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреА рдЬрд╛рдПрдЧреА рдХрд┐ рдпрд╣ рд╡рд░реНрд╖ рдХреЗ рдмрд╛рдж рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ XXXX / Y.ZZ рдЬрд╛рд░реАред

рд╕рдмрд╕реЗ рдХрдард┐рди рд░рд╛рд╕реНрддрд╛ рдПрдХ рдирдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реАрдВрдЧ рдЦреЛрдЬрдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдЖрд╕рд╛рди рдирд╣реАрдВ рдерд╛ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ 18 рдорд╣реАрдиреЛрдВ рдореЗрдВ рд╕реБрдИ рдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рджрд┐рд╢рд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдмрджрд▓ рдЧрдпрд╛ рд╣реИред

рдореИрдВрдиреЗ default_rng() рд╕рдВрд╢реЛрдзрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ gh-16493 рдЦреЛрд▓рд╛, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдирд╣реАрдВ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреА рд╣реИ, рд╣рдордиреЗ рд╢рд╛рдпрдж рдмрд╣реБрдд рдкрд╣рд▓реЗ рд╣реА рдирд┐рдпрдореЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдерд╛ рдФрд░ рдореИрдВ рд╕рд┐рд░реНрдл рдбреЙрди ' рдпрд╛рдж рдирд╣реАрдВ рд╣реИред


рдореИрдВ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдЪреАрдЬреЗрдВ рд╣реИрдВ:

  1. рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЗрдбрд╡реЗ рд╣реИ, рдореБрдЭреЗ рдЗрд╕ рдкрд░ рд░реЙрдмрд░реНрдЯ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЕрднреА рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдЬреНрдЮрд╛рди рдХреЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? (рдпрд╛рдиреА рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЯрдХрд░рд╛рд╡ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╢рд╛рдпрдж рд╢рд░реНрдордирд╛рдХ рд░реВрдк рд╕реЗ рдХрдо рд╣реИ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░рд┐рдорд╛рдг рдореЗрдВ рднреА рдХреБрдЫ рднреА рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ NumPy рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рд╡рд╛рд░рдВрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдпрд╣ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реИред)
  2. рд╣рдо рдмрддрд╛рддреЗ рд╣реИрдВ:

    рдФрд░ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ [...] рд╕рд╛рде рд╣реА: рдЧрдгрд┐рдд: 2^{127} рд╕реНрдЯреНрд░реАрдо

    рдЬреЛ, рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдирдВрдмрд░ рдХрд╣рд╛рдВ рд╕реЗ рдЖрддрд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реА рдУрд░ рд╕реЗ рдереЛрдбрд╝рд╛ рдУрд╡рд░рд╕реНрдЯреЗрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╣рдо рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╡рд░рдг рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдмрд╛рд╣рд░реА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ?

рдЕрднреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдХрд╛рдо рдПрдХ PCG64DXSM BitGenerator рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, "рд╕рд╕реНрддреЗ рдЧреБрдгрдХ" рдХреЗ рд╕рд╛рде PCG64 рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ DXSM рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рдиред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реИ рдХрд┐ XSL-RR рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдПрдХ рдХрджрдо рдКрдкрд░ рд╣реИ рдЬреЛ рдЕрдм рд╣рдорд╛рд░реЗ PCG64 рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╣реИ, рд░рдирдЯрд╛рдЗрдо рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдиреБрдХрд╕рд╛рди рдХреЗ рдмрд┐рдирд╛ рдмреЗрд╣рддрд░ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдЖрд▓рд╛ рдореЗрдВ рдПрдХ рд╕реАрдзрд╛ рдЙрдиреНрдирдпрди рд╣реИ рдЬреЛ PCG64 BitGenerator s рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╣рдо рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ PCG64 рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рдВрдпреЛрдЧ рд╕реЗ, рдореИрдВ рдкрд╕рдВрдж рд╣реИ рдХрд┐ рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдПрдХ рдЕрд▓рдЧ рдирд╛рдо рджрд┐рдпрд╛ BitGenerator рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрдЬрд╛рдп PCG64 рдирд┐рд░реНрдорд╛рддрд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рдХрд▓реНрдк randomgen рдореЗрдВ рдорд╣рд╛рди рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдФрд░ рд╡реЗрд░рд┐рдПрдВрдЯ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди numpy , рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдЪрдпрди "рдЧреНрд░реИрдм-рдПрдВрдб-рдЧреЛ" рд╣реЛрдВред рдЬрд┐рддрдирд╛ рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдордиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ default_rng() рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрддрд┐ рдХрд╛ рдирд┐рдкрдЯрд╛рди рдХрд┐рдпрд╛ред рдЬрдм рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛, рддреЛ рдореИрдВрдиреЗ рдпрд╣ рдзрд╛рд░рдгрд╛ рдмрдирд╛рдИ рдХрд┐ рдЬрд┐рди рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдореИрдВрдиреЗ рдЗрд╕реЗ Generator() рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдЕрдкрдиреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╕рдВрдж рдХрд┐рдпрд╛ рдерд╛ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рдерд╛ рдХрд┐ рд╣рдо рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд╛рдо рд╕реЗ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХреЗрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЙрд╕ рд╕рдордп рд╣рдо рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рдереЗ рдХрд┐ default_rng() рдХреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд BitGenerator рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдмрд╛рдж рдореЗрдВ рдЯрд╛рд▓рд╛ред рдХреНрдпреЛрдВрдХрд┐ PCG64DXSM рд╕рдорд╛рди API ( .jumped() рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ) рдХреЛ PCG64 рд░реВрдк рдореЗрдВ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рд╣рдорд╛рд░рд╛ рдПрдХрдорд╛рддреНрд░ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдирдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрд┐рдЯрд╕реНрдЯреНрд░реАрдо рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдо рдЙрд╕реА рд╕рдордп рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ, рдЬреЛ рдзрд╛рд░рд╛ Generator NEP 19 (рдпрд╛рдиреА X.Y.0 рдлрд╝реАрдЪрд░ рд░рд┐рд▓реАрдЬрд╝ рдкрд░) рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реА рдзрд╛рд░рд╛ рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдВрд╢реЛрдзрди рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛред рдпрджрд┐ рд╣рдо рдЪрд╛рд╣реЗрдВ рддреЛ рд╣рдо рдереЛрдбрд╝рд╛ рдФрд░ рд╕рддрд░реНрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдкрд╣рд▓реЗ PCG64DXSM BitGenerator 1.20.0 warn() , (рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреНрд░рднрд╛рд╡ рдХреЗ рд╢реЛрд░) рдХрд┐ default_rng() 1.21.0 рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред

рдирдП рдмреАрдЬреА рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдЧрд╛рдЗрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрдЪрд┐рддреНрдп рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрд╕реАрдЬреА 64 рдкрд░ рдиреЛрдЯреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

  1. рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЗрдбрд╡реЗ рд╣реИ, рдореБрдЭреЗ рдЗрд╕ рдкрд░ рд░реЙрдмрд░реНрдЯ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЕрднреА рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдЬреНрдЮрд╛рди рдХреЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? (рдпрд╛рдиреА рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЯрдХрд░рд╛рд╡ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╢рд╛рдпрдж рд╢рд░реНрдордирд╛рдХ рд░реВрдк рд╕реЗ рдХрдо рд╣реИ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░рд┐рдорд╛рдг рдореЗрдВ рднреА рдХреБрдЫ рднреА рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ NumPy рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рд╡рд╛рд░рдВрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдпрд╣ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реИред)

рдпрд╣ рд╢рд╛рдпрдж рдереЛрдбрд╝рд╛ рдмрд╣реБрдд glib рд╣реИред рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдХрд┐рддрдиреЗ рд╕реНрдЯреНрд░реАрдо, рдХрд┐рддрдирд╛ рдбреЗрдЯрд╛ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ рдФрд░ рдЬрдиреНрдорджрд┐рди рдХреА рдЯрдХреНрдХрд░ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рдЬреЛрдЦрд┐рдо рдХреНрдпрд╛ рд╣реИред рдореИрдВ рдЙрд╕ рдЧрдгрд┐рдд рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рддрдХ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рдирд╣реАрдВ рдЬреБрдЯрд╛ рдкрд╛рдпрд╛, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХреБрдЫ рд╕рдордп рдореЗрдВ рдЗрд╕ рдЧрд┐рддреВрдм рдореБрджреНрджреЗ рдкрд░ рджреЛрдмрд╛рд░рд╛ рдЧреМрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдмрд╛рд▓-рдСрди-рдлрд╛рдпрд░ рдореБрджреНрджрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЕрднреА _ _ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ред

рдореИрдВ рдмрд╛рдж рдореЗрдВ рдХреБрдЫ рд▓рд┐рдЦреВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рд╣рдо рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рдХреЗ рдореБрдХрд╛рдмрд▓реЗ рдЧреНрд░рд╛рдЙрдВрдб рдХреЛ рдкреАрдЫреЗ рдЫреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВред рд╕реЗрдмреЗрд╕реНрдЯрд┐рдпрд╛рдиреЛ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ рдХрд┐ рдиреНрдпреВрдореА рдиреЗ рдкреАрд╕реАрдЬреА рдХреЛ рднреЗрдЬ рджрд┐рдпрд╛ рдерд╛ред рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ NumPy рдЯреАрдо рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЕрдзрд┐рдХ рдЧрд╣рд░рд╛рдИ рдореЗрдВ рдерд╛, рдФрд░ рдЕрдзрд┐рдХ рдкреНрд░рд╢рдВрд╕рдиреАрдп рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдореЗрд░реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрдерд╛рд╕рдВрднрд╡ рд╢реАрдШреНрд░рддрд╛ рд╕реЗ рдЙрдиреНрдирдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ - рд╕рд┐рд░реНрдл рднреНрд░рдо рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдПрдХ рдЪрдХреНрд░рдг рдЪрдХреНрд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рди рдХрд░реЗрдВред

@imneme - рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж - рдореБрдЭреЗ рдПрдХ рд▓рдВрдмреА рдмрд╛рдд рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА

рд╢рд╛рдпрдж рдкрд┐рдЫрд▓реЗ рдкреЛрд╕реНрдЯ рд╡рд┐рд╕реНрдлреЛрдЯ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрдврд╝рдиреЗ рд▓рд╛рдпрдХ рд╣реИред рдЖрдк рд╣рдореЗрдВ рдЗрди рдореБрджреНрджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╣рд╛рдВ рд╕реЗ рдереНрд░реЗрдб рдореЗрдВ рд╡рд╛рдкрд╕ рд╕реНрдХреНрд░реЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдкреАрд╕реАрдЬреА 32 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдерд╛ред

рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдерд╛ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдХреЗ рдкрджреЛрдВ рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВрдиреЗ рдпрд╣ рд╕рдм рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╣рд╛ рд╣реИ, рдпрд╣рд╛рдВ рдФрд░ рдХрд╣реАрдВ рдФрд░ ( рдореЗрд░рд╛ рдмреНрд▓реЙрдЧ (2017), reddit , рдореЗрд░рд╛ рдмреНрд▓реЙрдЧ рдлрд┐рд░ рд╕реЗ (2018) , рдФрд░ NumPy рдЪрд░реНрдЪрд╛рдУрдВ рдЖрджрд┐ рдореЗрдВ)

рдзрд╛рд░рд╛рдУрдВ рдФрд░ рдЙрдирдХреА рдЖрддреНрдо-рд╕рдорд╛рдирддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ (рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП @rkern рдиреЗ рдПрдХ рд╕реНрдЯреНрд░реАрдо-рдирд┐рд░реНрднрд░рддрд╛ рдкрд░реАрдХреНрд╖рдХ рд▓рд┐рдЦрд╛), рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рд▓рд┐рдЦрд╛ рдерд╛:

рдЬреИрд╕рд╛ рдХрд┐ рдореЗрд░реЗ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдореЗрдВ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдкреАрд╕реАрдЬреА рдХреА рдзрд╛рд░рд╛рдУрдВ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд╣реИред

_Mveryinson рдХреЗ рдЧреНрд░рд╛рдл рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, _every_ PRNG рдХреЗ рд▓рд┐рдП, рдЬреЛ рдЖрдкрдХреЛ рдХрд╛рдЙрдВрдЯрд░-рдЖрдзрд╛рд░рд┐рдд рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рд╡рд╛рд▓реЗ рд╕рд╣рд┐рдд рдкреВрд░реЗ рд░рд╛рдЬреНрдп рдХреЛ рдмреАрдЬ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╣рдо рдРрд╕реЗ рдмреАрдЬрд╛рд░реЛрдкрдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ PRNG рд╣реЛрдВрдЧреЗ рдЬрд┐рдирдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рд╕рд╣рд╕рдВрдмрджреНрдз рдереЗ (рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ PRNG рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдереЛрдбрд╝реА рджреВрд░реА рдкрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░ рд╣рдо рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдиреНрдп рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ)ред рдФрд░ рдпрджреНрдпрдкрд┐ PRNGs рдЬреЛ рдкреВрд░реНрдг-рд░рд╛рдЬреНрдп рд╕реАрдбрд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдирдпрд╛ рдкрд░рд┐рдЪрдп рдорд┐рд▓рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╣рд┐рд╕реНрд╕реЗ рддрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдзрд╛рд░рд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рдмрд╕ рдЕрдзрд┐рдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрд┐рд╕реЗ рдмреАрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред 1,2,3 рдЬреИрд╕реЗ рдЫреЛрдЯреЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрдорддреМрд░ рдкрд░ _any_ PRNG рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдмреАрдЬрд╛рд░реЛрдкрдг рдХреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рд╣рд░ рдХреЛрдИ рдЗрди рдмреАрдЬреЛрдВ рдХрд╛ рдкрдХреНрд╖ рд▓реЗрддрд╛ рд╣реИ, рддреЛ рдЙрдирдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреНрд░рдо рдХреЛ рдУрд╡рд░рд░рдкреНрд░рд┐рдЯреЗрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред

рд╣рдо рдЗрд╕реЗ рдПрдХ рдзрд╛рд░рд╛ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд░рд╛рдЬреНрдп рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣реА рдордВрдЧрд▓рдЧреЗрд▓рд┐рдпрд╛ рдиреЗ counter рд╢реЗрд╖ рд░рд╛рдЬреНрдп рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдХреБрд▓ рднреА рдмрд╛рддрдЪреАрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░, рдПрд▓рд╕реАрдЬреА рдХреА рддрд░рд╣, рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп рдореЗрдВ рднрд┐рдиреНрдирддрд╛рдПрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЬреЛрдбрд╝рд╛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдореЗрдВ рд░рд╛рд╢рд┐ рд╣реЛрддреА рд╣реИрдВред

рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕, PCG рдФрд░ XorWow рдХреА рдзрд╛рд░рд╛рдПрдБ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо "рд╕реНрдЯреВрдкрд┐рдб" рд╕реНрдЯреНрд░реАрдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЗ рдЬрдирд░реЗрдЯрд░ рдХреЗ рдПрдХ рддреБрдЪреНрдЫ рдкреБрдирд░реНрдореВрд▓реНрдпрд╛рдВрдХрди рдХрд╛ рдЧрдарди рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдореЗрдВ рдореВрд▓реНрдп рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛, рд╣рдорд╛рд░реЗ PRNG рдореЗрдВ 42 рдХреА рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдХрд░реАрдмреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╣реЛрдЧреА, рдЬрд╣рд╛рдВ рддреНрд╡рд░рд┐рдд рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░ рдореЗрдВ 42 рдмрд╛рд░ рдХрдИ рдлрд╕рд▓реЗрдВ рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ 42 рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рдЕрдиреНрдп рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдмреЗрд╡рдХреВрдл "рдмрд╕ рдПрдХ рд╡реЗрддрди рд╡реГрджреНрдзрд┐" рдпрд╛ "рд╕рд┐рд░реНрдл рдПрдХ рдПрдХреНрд╕реЛрд░" рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 42 рддрдХ рдЕрдЬреАрдм рджреЛрд╣рд░рд╛рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рд╕реЗ рдмрдЪреЗрдВрдЧреЗ; рд╕рднреА рдирдВрдмрд░реЛрдВ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░реАрдо рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВред (рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдореИрдВ рдЬреЛрд╢реАрд░реЛ 256 рдореЗрдВ рдХреНрд▓реЛрдЬ-рд░рд┐рдкреАрдЯ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдПрдХ

(рдореИрдВ рддрдм рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдФрд░ рдЗрд╕ рдПрдХ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдЧрд╣рд░рд╛рдИ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ред)

рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЦреНрдп рдЯреЗрдХ-рдСрдл рдпрд╣ рд╣реИ рдХрд┐ рд▓рдЧрднрдЧ _any_ PRNG рдХреЗ рд▓рд┐рдП, рдереЛрдбрд╝реЗ рд╕рдордп рдФрд░ рдКрд░реНрдЬрд╛ рдХреЗ рд╕рд╛рде рдЖрдк рдкреИрдереЛрд▓реЙрдЬрд┐рдХрд▓ рд╕реАрдбрд┐рдВрдЧреНрд╕ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред PCG рдХреБрдЫ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдРрд╕рд╛ рд╡реНрдпрдХреНрддрд┐ рд╣реИ рдЬреЛ PCG рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рд╢рдВрд╕рдиреАрдп рдмреАрдЬрд╛рд░реЛрдкрдг рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рд╛рде рд╕реЗ рддреИрдпрд╛рд░ рдХреА рдЧрдИ рдкреИрдереЛрд▓реЙрдЬреА (рдпрд╛рдиреА, рд╕реЗрдмрд╕реНрдЯрд┐рдпрд╛рдиреЛ) рд╣реИред рдЙрд╕ рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореИрдВрдиреЗ рдЕрдкрдиреЗ PRNGs рдФрд░ рдЕрдиреНрдп рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рд╣рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдо рд▓рд┐рдпрд╛ рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдк PRNG рд╕реНрдерд┐рддрд┐ рдХреЛ "рдереЛрдбрд╝реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ" рд▓рдЧрдиреЗ рд╡рд╛рд▓реА рдЪреАрдЬрд╝ рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реИ, рднрд▓реЗ рд╣реА рд▓реЛрдЧ рдЕрдиреНрдпрдерд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВ ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рднреА LFSR PRNG (XorShift-style, Mersenne Twister, рдЖрджрд┐) рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рдПрдХ рдСрд▓-рдЬреАрд░реЛ рд╕реНрдЯреЗрдЯ рдХреЗ рд╕рд╛рде рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рд╡рд╣реАрдВ рдЕрдЯрдХрд╛ рд░рд╣реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░-рд╢реВрдиреНрдп рдПрд▓рдПрдлрдПрд╕рдЖрд░ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╕рд░ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛрддреЗ рд╣реИрдВ (рдПрдХ рдШрдЯрдирд╛ рдЬрд┐рд╕реЗ рдЬрд╝реЗрд░реЛрд▓реИрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреНрдпреЛрдВ рд╕реА ++ рд▓реЛрдЧреЛрдВ рдиреЗ seed_seq ред)ред рдпрджрд┐ рдЖрдк "рдХреБрдЫ рдХрдВрдЯреНрд░реАрдмреНрдпреВрдЯреЗрдб рд╕реАрдбрд┐рдВрдЧ рдХрд░рддреЗ рд╣реИрдВ" рдЧреЗрдо рдЦреЗрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ 100 LFSR рдХреЗ рд▓рд┐рдП рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЙрди рд╕рднреА рдХреЛ рдЬрд╝реАрд░реЛ-рд▓реИрдВрдб рдорд╛рд░ рд╕реЗ 1K рджреВрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рдВрдЪрд┐рдд рд╢реБрд░реБрдЖрддреА рд╕рднреА рдкрд░реНрдпрд╛рдкреНрдд рдирд┐рд░реНрджреЛрд╖ рджрд┐рдЦреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╡реЗ рд╕рднреА рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╡рдЬрди рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдЗрд╕ рдЕрдЬреАрдм рдЧрд┐рд░рд╛рд╡рдЯ рдХреЛ рдорд╛рд░ рджреЗрдВрдЧреЗред

рдпрджрд┐ рдЖрдк рдПрдХ PCG рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдЙрдЪрд┐рдд рдПрдиреНрдЯреНрд░рд╛рдкреА рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдпрд╣ рдареАрдХ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ 1, 2, 3 рдЬреИрд╕реЗ рдХрдмрд╛рдбрд╝ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рднреА PRNG рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИ ред рдФрд░ рдкреАрд╕реАрдЬреА рдХреЗ рд╕рд╛рде, 99.9% рд╕рдордп, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдереЛрдбрд╝реЗ рдХрдмрд╛рдбрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рдареАрдХ рд╣реЛрдЧрд╛ред рдпрд╣ LFSR рдХреЗ рдореБрджреНрджреЛрдВ рдХреА рддрд░рд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред

рд▓реЗрдХрд┐рди DXSM рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдордЬрдмреВрдд рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ рдпрд╛ рдореИрдВрдиреЗ рдЗрд╕реЗ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рдФрд░ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд▓рд╛рд╕рд┐рдХ PCG64 рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдЪрд░реНрдЪрд╛ рд╕реЗ PCG64 рдХреА рдзрд╛рд░рд╛рдУрдВ (LCG рд╡реГрджреНрдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдХреА рдЖрд▓реЛрдЪрдирд╛ / рдмрдЪрд╛рд╡ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЬрдмрдХрд┐ LCG рдХреЗ рдЧрдгрд┐рдд рдХреЗ рдХрд╛рд░рдг рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рджреНрд╡рдВрджреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдпрд╣ рдореВрд▓ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдВ рд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реЗрдмрд╛рд╕реНрдЯрд┐рдпрд╛рдиреЛ рдХреЗ рдореВрд▓ рд╕рдорд╛рд▓реЛрдЪрдирд╛ , рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдпрд╛ рдкреБрд░рд╛рдиреЗ рдореЗрдЧрд╛-рдереНрд░реЗрдб рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣рд╛рдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдЙрди рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЧрдгрд┐рдд рдкрд░ рдЕрдзрд┐рдХ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкрд░рд┐рдгрд╛рдо рдЕрдм рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ, рдХрдо рд╕реЗ рдХрдоред

рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЦреНрдп рдЯреЗрдХ-рдСрдл рдпрд╣ рд╣реИ рдХрд┐ рд▓рдЧрднрдЧ _any_ PRNG рдХреЗ рд▓рд┐рдП, рдереЛрдбрд╝реЗ рд╕рдордп рдФрд░ рдКрд░реНрдЬрд╛ рдХреЗ рд╕рд╛рде рдЖрдк рдкреИрдереЛрд▓реЙрдЬрд┐рдХрд▓ рд╕реАрдбрд┐рдВрдЧреНрд╕ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рджреА рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд╕рд╛рдордиреЗ рдирд┐рд░реНрдгрдп рдХреЛ рдбреНрд░рд╛рдЗрд╡ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ / рд╕рдХрддреА рд╣реИред рдЕрдЧрд░ рдореИрдВ рдПрдХ рдкрд░рд┐рдорд┐рдд PRNG рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдПрдБ рдЦреАрдВрдЪрддрд╛ рд╣реВрдБ, рддреЛ рдЕрдВрддрддрдГ рдкреНрд░реИрдХреНрдЯреНрд░реЗрдВрдб рдЗрд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рджреЗрдЧрд╛ред рдпрд╣ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рддрдереНрдп рдЙрд╕ PRNG рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдЕрдорд╛рдиреНрдп рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЙрд╕ рдмрд╛рдЗрдирд░реА рд╕реЗ рджреВрд░ рдЬрд╛рдирд╛ рдФрд░ рд╣реЗрдбрд░реВрдо рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЙрди рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореВрд▓ рдкреАрд╕реАрдЬреА рдкреЗрдкрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд░рд╛рд╣рд╛ рдерд╛ред рдкреНрд░рддрд┐рдХреВрд▓ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдкреИрдереЛрд▓реЙрдЬреА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдо рдЗрд╕ рдмрд╛рдд рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреИрдереЛрд▓реЙрдЬреА рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдЪреНрдЫреА рдПрдиреНрдЯреНрд░рд╛рдкреА-рд╕реАрдбрд┐рдВрдЧ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕рдХреА рдорд╛рддреНрд░рд╛ рддрдп рдХрд░реЗрдВ, рдФрд░ рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рд▓рд╛рд╣ рдореЗрдВ рдмрджрд▓ рджреЗрдВред

рдЙрди рджреЛ рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдЬреЛ рдирд┐рдЪрд▓реЗ 58 рдмрд┐рдЯреНрд╕ рдФрд░ рдПрдХ рд╣реА рд╡реЗрддрди рд╡реГрджреНрдзрд┐ (рд╣рдо рдЙрд╕ рдореЗрдВ рдПрдХ рдкрд┐рди рдбрд╛рд▓реЗрдВрдЧреЗ) рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЙрди рд░рд╛рдЬреНрдпреЛрдВ рд╕реЗ PCG64 XSL-RR рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рдХрд░рддреЗ рд╣реБрдП рд▓рдЧрднрдЧ 32 GiB рдкрд░ рдкреНрд░реИрдХреНрдЯреНрд░реИрдВрдб рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрд╡рд▓реЛрдХрдиреАрдп рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдмрдЪрдирд╛ рдЙрдЪрд┐рдд рд╣реИред рддреЛ рдЪрд▓рд┐рдП рдЗрд╕реЗ рдЕрдкрдиреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рддрдиреА рдмрд╛рд░ рдЕрдЪреНрдЫреА рдПрдиреНрдЯреНрд░рд╛рдкреА-рд╕реАрдбрд┐рдВрдЧ рд╣реЛрддреА рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдкреНрд░рддрд┐рдХреВрд▓ рдпреЛрдЬрдирд╛ рд╕рдВрднрд╛рд╡реНрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░рджрд╛рдпреА рд╣реИ (рд╕рднреА рдЗрддрдиреЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИрдВ)ред n рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рднреА 2 рдХреА рд╕рдорд╛рди 58 рдмрд┐рдЯреНрд╕ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ n**2 / 2**58 , рдбрдмрд▓-рдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП 2 рдХрд╛ рдХрд╛рд░рдХ рджреЗрдВ рдпрд╛ рд▓реЗрдВред рдЗрд╕рд▓рд┐рдП рдЖрдзреЗ рдмрд┐рд▓рд┐рдпрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдПрдХ рдРрд╕реА рдЬреЛрдбрд╝реА рд╣реИ рдЬреЛ рдЕрдЧрд░ Intereaeaved рдкреНрд░реЗрдХреНрдЯреИрдВрдб рдХреЛ рд╡рд┐рдлрд▓ рдХрд░ рджреЗрдЧреАред рдЖрдзрд╛ рдмрд┐рд▓рд┐рдпрди рдмрд╣реБрдд рд╣реИ! рдореЗрд░реЗ рдлреИрд╕рд▓реЗ рдореЗрдВ, рд╣рдо рд╢рд╛рдпрдж рдХрднреА рднреА numpy рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗ рдЬреЛ рдХрд┐ рдХрдИ PCG64 рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред numpy рд╕рдВрднрд╡рддрдГ рдЧрд▓рдд рдЯреВрд▓ рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрд░рдВрднрд┐рдХ рд░рд╛рдЬреНрдпреЛрдВ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рдирдХрд╛ рдмрд╛рдж рдХрд╛ рдбреНрд░рд╛ _cross_ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдирд┐рдЪрд▓реЗ -58-рдмрд┐рдЯ-рдЯрдХрд░рд╛рд╡ рд╡рд╛рд▓реЗ рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдореИрдВ рдЕрднреА рднреА рдЙрд╕ рдкрд░ рддрд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЛрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓рдВрдмрд╛рдИ рджреНрд╡рд┐рдШрд╛рдд рдХреЗ рдмрдЬрд╛рдп рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИред рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рд╣реВрдВ, рдФрд░ рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг ( 2**28 рдбреНрд░реЙ) рд╕реЗ 16 GiB рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬреЛ рдХрд┐ рд╣рдордиреЗ рдкреНрд░реИрдХреНрдЯрд┐рд░реИрдВрдб рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдЬреЛрдбрд╝реЗ рд╕реЗ рдХрд┐рддрдирд╛ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рдореИрдВ рдХреЗрд╡рд▓ 2**15 рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ numpy рдкреНрд░реЛрдЧреНрд░рд╛рдо XSL-RR рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде PCG64 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рдЪрд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреБрдЫ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдВрдж рд╣реЛрдиреЗ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмрдбрд╝реЗ рд╡рд┐рддрд░рд┐рдд рд╕реБрджреГрдвреАрдХрд░рдг рд╕реАрдЦрдиреЗ рдХреЗ рд░рди)ред

рдЪрд▓реЛ рдЙрд╕ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХреЛ рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рдУ рдФрд░ рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░реЗрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╣рдирд╛ рдЙрдЪрд┐рдд рд╣реИ рдХрд┐ рдПрдХреНрд╕рдПрд╕рдПрд▓рдЖрд░-рдЖрд░рдЖрд░ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде, рд░рд╛рдЬреНрдп рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдиреНрдЯреНрд░рд╛рдкреА-рдмреАрдЬрд┐рдВрдЧ рднреА рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдиреНрдЯреНрд░рд╛рдкреА-рд╕реАрдбреЗрдб рдЗрдиреНрдХреНрд░реАрдореЗрдВрдЯ рдХреА рдХрд┐рд╕реА рднреА рдЬреЛрдбрд╝реА рдХреЗ рд▓рд┐рдП, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЯрдХрд░рд╛рдиреЗ рд╡рд╛рд▓реЗ рд░рд╛рдЬреНрдпреЛрдВ рдХреА рд╕рдорд╛рди рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдЬрд╛рдирдмреВрдЭрдХрд░ рдЙрди рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдареЛрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рди рдирд┐рдЪрд▓реЗ 58 рдмрд┐рдЯреНрд╕ рдореЗрдВ рдХреЛрд╕рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд▓рдЧрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯрдХрд░рд╛рдиреЗ рд╡рд╛рд▓реЗ рд░рд╛рдЬреНрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕рдорд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдВрднрд╛рд╡рдирд╛ рдЧрдгрдирд╛ рд╕рдорд╛рди рд░рд╣рддреА рд╣реИред рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкреАрд╕реАрдЬреА рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рдирд╣реАрдВ рд╣реИред рдбреАрдПрдХреНрд╕рдПрд╕рдПрдо рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рдкрд░реНрдпрд╛рдкреНрдд рдордЬрдмреВрдд рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг +2 ) рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд LCG рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкреНрд░рддрд┐рд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдкрд░реНрдпрд╛рдкреНрдд рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ (рдЬрдм рджреВрд░реА рдореАрдЯреНрд░рд┐рдХ 0 рджреЗрддрд╛ рд╣реИред

рдореИрдВ рдпрд╣ рджреЛрд╣рд░рд╛рдХрд░ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рд╕рднреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕рд╣реА рд╕рдордЭреМрддрд╛ рдХрд░рддреЗ рд╣реИрдВ: PCG64DXSM рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдпрджрд┐ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ, рддреЛ рдЗрд╕рдХреЗ рдмреЗрд╣рддрд░ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдЧреБрдг рдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдХреБрдЫ рднреА рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХрдо рджрд╕реНрддрд╛рд╡реЗрдЬ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдореЗрд░реА рдкреБрд╕реНрддрдХ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИред

рдзрд╛рд░рд╛рдПрдБ рдЕрднреА рднреА рдХреБрдЫ рд╣рдж рддрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ рддрднреА рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрд╕реА рд╕реНрдЯреНрд░реАрдо рдкрд░ рдЬрдирд░реЗрдЯрд░ рд╣реЛрдВред

рд▓реЗрдХрд┐рди рдХрд┐рд╕ рдкрд░рд┐рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЙрдирдХреЗ рдкрд╛рд╕ 58 рдмрд┐рдЯреНрд╕ рд╕рдорд╛рди рд╣реЛрдВрдЧреЗ рдФрд░ рдПрдХ рд╣реА рд╕реНрдЯреНрд░реАрдо рдкрд░ рд╣реЛрдВрдЧреЗ? рдХреНрдпрд╛ рдХреЛрдИ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд╣рд╛рдВ рдРрд╕рд╛ рд╣реЛрдЧрд╛?

рдПрдХ рдРрд╕рд╛ рдХреБрдЫ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдорд╛рдорд▓рд╛ рдЬреЛ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ (рдЬрдм рд╣рдордиреЗ jumped рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереА), рдФрд░ рдореИрдВрдиреЗ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереА рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдерд╛ред

рдзрд╛рд░рд╛рдПрдБ рдЕрднреА рднреА рдХреБрдЫ рд╣рдж рддрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ рддрднреА рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрд╕реА рд╕реНрдЯреНрд░реАрдо рдкрд░ рдЬрдирд░реЗрдЯрд░ рд╣реЛрдВред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, XSL-RR рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдЖрдЗрдП рджреЛ PCG64 XSL-RR рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╣рдо рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдФрд░ рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдВрдЯреНрд░реЛрдкреА-рдмреАрдЬ рдХреЛ рдПрдиреНрдЯреНрд░рд╛рдкреА-рд╕реАрдб рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЕрдиреНрдп PCG64 рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 2**70 рдмреБрд░реЗ рд░рд╛рдЬреНрдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░реИрдХреНрдЯреНрд░реИрдВрдб рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдлрд▓ рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рд╕рдорд╛рди-рдирд┐рдЪрд▓реЗ -58-рдмрд┐рдЯреНрд╕-рд░рд╛рдЬреНрдп рд╕рдорд╛рди-рд╡реГрджреНрдзрд┐ рд╡рд┐рдлрд▓рддрд╛ред рдпрд╣ рд╕рдорд╛рди рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд░рд╛рдЬреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдЪрд▓реЗ 58-рдмрд┐рдЯреНрд╕ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рд░рд╛рдЬреНрдп рдХреЗ рдирд┐рдЪрд▓реЗ 58-рдмрд┐рдЯреНрд╕ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдкрд╣рд▓реА рджреВрд░реА рд╕реЗ (рдЖрдкрдХреЗ LCG рджреВрд░реА рдХреЗ рдЙрдкрд╛рдп рдХреЗ рдЕрдиреБрд╕рд╛рд░) рд╣реИ, рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрд╛рдВрдХрдиред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд░рдЪрдирд╛рддреНрдордХ рдкреНрд░рдорд╛рдг (рдкрд╛рдпрдерди рдХреЛрдб) рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рдмрд┐рд╕реНрддрд░ рдкрд░ рдЬрд╛рдирд╛ рд╣реИ рдФрд░ рдХрд▓ рдЗрд╕реЗ рд╕рд╛рдл рдХрд░рдирд╛ рд╣реИред

@rkern , рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИред рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдБ, рдореИрдВрдиреЗ рдЙрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рджрд┐рдЦрддрд╛ рд╣реИред

рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЦреНрдп рдЯреЗрдХ-рдСрдл рдпрд╣ рд╣реИ рдХрд┐ рд▓рдЧрднрдЧ _any_ PRNG рдХреЗ рд▓рд┐рдП, рдереЛрдбрд╝реЗ рд╕рдордп рдФрд░ рдКрд░реНрдЬрд╛ рдХреЗ рд╕рд╛рде рдЖрдк рдкреИрдереЛрд▓реЙрдЬрд┐рдХрд▓ рд╕реАрдбрд┐рдВрдЧреНрд╕ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред PCG рдХреБрдЫ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдРрд╕рд╛ рд╡реНрдпрдХреНрддрд┐ рд╣реИ рдЬреЛ PCG рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рд╢рдВрд╕рдиреАрдп рдмреАрдЬрд╛рд░реЛрдкрдг рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рд╛рде рд╕реЗ рддреИрдпрд╛рд░ рдХреА рдЧрдИ рдкреИрдереЛрд▓реЙрдЬреА (рдпрд╛рдиреА, рд╕реЗрдмрд╕реНрдЯрд┐рдпрд╛рдиреЛ) рд╣реИред рдЙрд╕ рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореИрдВрдиреЗ рдЕрдкрдиреЗ PRNGs рдФрд░ рдЕрдиреНрдп рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рд╣рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдо рд▓рд┐рдпрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЯрд┐рдкреНрдкрдгреА рдХреА рд╣реИ, рдпрд╣ рдЧрд▓рдд рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╕рд╣рд╕рдВрдмрджреНрдз, рдЧреИрд░-рдЕрддрд┐рд╡реНрдпрд╛рдкреА рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХрд╛ рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИ, рдХрд╣рддреЗ рд╣реИрдВ, xoshiro256 ++ рд╕реЗ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкреАрд╕реАрдЬреА рдХреЗ рднреАрддрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

PRNG рдЬреЛ рдЬрд▓реНрджреА рд╕реЗ рдЕрдкрдиреЗ рдкреВрд░реЗ рд░рд╛рдЬреНрдп рдХреЛ рдорд┐рд▓рд╛рддреЗ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк xoshiro256 ++ рд╕реЗ рджреЛ рдЧреИрд░-рдЕрддрд┐рд╡реНрдпрд╛рдкреА рдЕрдиреБрдХреНрд░рдо рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рд╕рд╣рд╕рдВрдмрджреНрдз рд╣реИрдВ, рддреЛ рдЬреИрд╕реЗ рдЙрджрд╛рд╣рд░рдг рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд┐рдП рд╣реИрдВ, рдХреГрдкрдпрд╛ рдРрд╕рд╛ рдХрд░реЗрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдЙрдирдХреЗ рд╕рд╣рд╕рдВрдмрдВрдз рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП, 2018 рдореЗрдВ рдЬрдм рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкреАрд╕реАрдЬреА рдХреА рдЖрд▓реЛрдЪрдирд╛ рдХреА, рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рд╡рд┐рднрд┐рдиреНрди рдореБрджреНрджреЛрдВ (рдЬреИрд╕реЗ рд╡рдВрдЪрд┐рдд рдмреАрдЬрд╛рд░реЛрдкрдг, рдЖрджрд┐) рдХреЗ рд╕рд╛рде рд▓рд┐рдЦреЗ рдЧрдП рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢рд╛рдорд┐рд▓ рдереЗ, рдореИрдВрдиреЗ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд▓рд┐рдЦреА рдЬрд┐рд╕рдореЗрдВ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдерд╛ред рдЕрдиреНрдп рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд PRNGs рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рдореЗрдВ corrsplitmix2.c рдЬреЛ рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рдореЗрдВ рд╕рд╣рд╕рдВрдмрджреНрдз рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реЗрдмрд╕реНрдЯрд┐рдпрди рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ рдЬрдм рдЙрд╕рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдореБрдЭреЗ рдЙрд╕рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдХрд░реАрдм рд╕реЗ рджреЗрдЦрдиреЗ рдХрд╛ рдореМрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЙрд╕рдХрд╛ рдирдпрд╛ рд╡реНрдпрдХреНрддрд┐ рдЙрд╕рд╕реЗ рдЕрд▓рдЧ рд╣реИ? рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдерд╛ред

рдКрдкрд░ рджрд┐рдП рдЧрдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдиреЗ _chooses_ рд╕реНрдЯреНрд░реАрдо рдХреЛ_рд╣реИред рдЗрд╕реЗ рд▓рд┐рдЦрдирд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрд╕рд╛рди рд╣реИред

рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдкреАрд╕реАрдЬреА рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рдЬреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ _user_ рд╕реНрдЯреНрд░реАрдо рдЪреБрдиреЗрдВ, рдФрд░ рдлрд┐рд░ рд╕рд╣рд╕рдВрдмрдВрдз рджрд┐рдЦрд╛рддрд╛ рд╣реИред

рдореИрдВ рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ http: / рдЬреИрд╕реЗ рдЕрдиреНрдп рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рдПрдХ рд╕рд╣рд╕рдВрдмрджреНрдз рдЕрдиреБрдХреНрд░рдо рдкрд╛рддрд╛ рд╣реИ,

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реНрдЯреНрд░реАрдо рдЪреБрдирдиреЗ рдореЗрдВ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд╕рд╣рд╕рдВрдмрдВрдз рдХрд╛ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рд░реВрдк рджрд┐рдЦрд╛рддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЯрд┐рдкреНрдкрдгреА рдХреА рд╣реИ, рдпрд╣ рдЧрд▓рдд рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╕рд╣рд╕рдВрдмрджреНрдз, рдЧреИрд░-рдЕрддрд┐рд╡реНрдпрд╛рдкреА рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХрд╛ рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИ, рдХрд╣рддреЗ рд╣реИрдВ, xoshiro256 ++ рд╕реЗ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкреАрд╕реАрдЬреА рдХреЗ рднреАрддрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣рдо рдпрд╣рд╛рдВ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВрдиреЗ рдирд╣реАрдВ рдХрд╣рд╛ рдХрд┐ рдореИрдВ рдХрд┐рд╕реА рднреА PRNG рдХреЗ рд▓рд┐рдП рд╕рд╣рд╕рдВрдмрджреНрдз, рдЧреИрд░-рдЕрддрд┐рд╡реНрдпрд╛рдкреА рджреГрд╢реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддрд╛ рд╣реВрдВ, рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкреИрдереЛрд▓реЙрдЬрд┐рдХрд▓ рд╕реАрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦреЗ рдЧрдП рд╡рд┐рднрд┐рдиреНрди рд╕рд╣рд╕рдВрдмрдВрдз рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдпрд╛ рдерд╛, рдФрд░ рдЕрдиреНрдп рдЬреИрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдмреБрд░рд╛ Xoshiro ** рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИ ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, PRNGs рдЬреЛ рдЕрдкрдиреЗ рдкреВрд░реЗ рд░рд╛рдЬреНрдп рдХреЛ рдирд╣реАрдВ рдорд┐рд▓рд╛рддреЗ рд╣реИрдВ, рдореЗрдВ рдПрдХ рд▓рдВрдмрд╛ рдЗрддрд┐рд╣рд╛рд╕ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ XorWow, рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╡реНрдпрдВрдЬрдиреЛрдВ рдореЗрдВ рдЬрдирд░реЗрдЯрд░ рдЖрджрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд╕реЗрдмреЗрд╕реНрдЯрд┐рдпрд╛рдиреЛ рдХрд╛ рддрд░реНрдХ рджреЗрдЦрдиреЗ рдХреЗ рдмрд┐рдВрджреБ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдХрд╛ рддрд░реНрдХ рдХрд╣реЗрдЧрд╛ рдХрд┐ рдХрд┐рд╕реА рддрд░рд╣ рдорд╛рд░реНрд╕рд╛рдЧреНрд▓рд┐рдпрд╛ рдиреЗ XorWow рдореЗрдВ XorWift_worse_ рдХреЛ рдПрдХ Weyl рдЬреЛрдбрд╝рдХрд░ рдмрдирд╛рдпрд╛ред рдЕрдиреБрдХреНрд░рдо, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдорд╛рди рдЬрдирд░реЗрдЯрд░ рдХреА рдПрдХ рд╡рд┐рд╢рд╛рд▓ рд╕рдВрдЦреНрдпрд╛ рдмрдирд╛рддрд╛ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣рдо рдпрд╣рд╛рдВ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВрдиреЗ рдирд╣реАрдВ рдХрд╣рд╛ рдХрд┐ рдореИрдВ рдХрд┐рд╕реА рднреА PRNG рдХреЗ рд▓рд┐рдП рд╕рд╣рд╕рдВрдмрджреНрдз, рдЧреИрд░-рдЕрддрд┐рд╡реНрдпрд╛рдкреА рджреГрд╢реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддрд╛ рд╣реВрдВ, рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкреИрдереЛрд▓реЙрдЬрд┐рдХрд▓ рд╕реАрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦреЗ рдЧрдП рд╡рд┐рднрд┐рдиреНрди рд╕рд╣рд╕рдВрдмрдВрдз рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдпрд╛ рдерд╛, рдФрд░ рдЕрдиреНрдп рдЬреИрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдмреБрд░рд╛ Xoshiro ** рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИ ред

рдХреГрдкрдпрд╛ рддрдХрдиреАрдХреА рд╕реНрддрд░ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред "рдкреИрдереЛрд▓реЙрдЬрд┐рдХрд▓" рдХрд╛ рдХреЛрдИ рдЧрдгрд┐рддреАрдп рдЕрд░реНрде рдирд╣реАрдВ рд╣реИред

рд╕реНрд╡-рд╕рд╣рд╕рдВрдмрдВрдз рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХрд╛ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╕рд╣реА рддрд░реАрдХрд╛ рджреЛ рдмреАрдЬреЛрдВ рдХреЛ рджреЛ рдЧреИрд░-рдЕрддрд┐рд╡реНрдпрд╛рдкреА рджреГрд╢реНрдпреЛрдВ (рдкрд░реАрдХреНрд╖рдг рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдЧреИрд░-рдЕрддрд┐рд╡реНрдпрд╛рдкреА) рдореЗрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ - рд╡реЗ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдУрд╡рд░рд▓реИрдк рдХрд░реЗрдВрдЧреЗ рдпрджрд┐ рдЖрдк рдмрд╣реБрдд рджреВрд░ рдЬрд╛рддреЗ рд╣реИрдВ), рдЙрдиреНрд╣реЗрдВ рдЗрдВрдЯрд░рд▓реЗрд╡ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдмреИрдЯрд░реА рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗред

рдпрджрд┐ рдЖрдк рджреЛ рдЕрдиреБрдХреНрд░рдореЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдУрд╡рд░рд▓реИрдк рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рд╣рд░ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╕рдВрдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдХреНрд░рд┐рдкреНрдЯреЛ рдПрдХ, рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЗ рдУрд╡рд░рд▓реИрдк рдХреЗ рдмрд╛рдж рдПрдХ рд╣реА рдЖрдЙрдЯрдкреБрдЯ рджреЛ рдмрд╛рд░ рд╣реЛрдЧрд╛, рдФрд░ рдХреЛрдИ рднреА рдЙрдЪрд┐рдд рдкрд░реАрдХреНрд╖рдг рдЙрд╕реЗ рдЙрдард╛рдПрдЧрд╛ред

рдУрд╡рд░рд▓реИрдкрд┐рдВрдЧ рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП "рдкреИрдереЛрд▓реЙрдЬрд┐рдХрд▓ рд╕реАрдбрд┐рдВрдЧ" рд╣рд░ рдЬрдирд░реЗрдЯрд░ (рдЬреЛ рднреА "рдкреИрдереЛрд▓реЙрдЬрд┐рдХрд▓" рд╕рд╛рдзрди) рдХреЗ рд▓рд┐рдП рдПрдХ рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рд╣реИред

рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рдЪреВрдВрдХрд┐ рдЖрдк рджрд╛рд╡рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдкреАрд╕реАрдЬреА рдХреЗ рд╕рдорд╛рди рд╕рд╣рд╕рдВрдмрдВрдз рдкрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЬрд┐рд╕рдореЗрдВ рдЕрдиреБрдХреНрд░рдо рдУрд╡рд░рд▓реИрдкрд┐рдВрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреНрдп рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ), рдХреНрдпрд╛ рдЖрдк xoshiro256 ++ рдпрд╛ SFC64 рд╕реЗ, рд╕рд╣рд╕рдВрдмрджреНрдз, рдЧреИрд░-рдЕрддрд┐рд╡реНрдпрд╛рдкреА рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред ?

рд╕реНрд╡-рд╕рд╣рд╕рдВрдмрдВрдз рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХрд╛ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╕рд╣реА рддрд░реАрдХрд╛ рджреЛ рдмреАрдЬреЛрдВ рдХреЛ рджреЛ рдЧреИрд░-рдЕрддрд┐рд╡реНрдпрд╛рдкреА рджреГрд╢реНрдпреЛрдВ (рдкрд░реАрдХреНрд╖рдг рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдЧреИрд░-рдЕрддрд┐рд╡реНрдпрд╛рдкреА) рдореЗрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ - рд╡реЗ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдУрд╡рд░рд▓реИрдк рдХрд░реЗрдВрдЧреЗ рдпрджрд┐ рдЖрдк рдмрд╣реБрдд рджреВрд░ рдЬрд╛рддреЗ рд╣реИрдВ), рдЙрдиреНрд╣реЗрдВ рдЗрдВрдЯрд░рд▓реЗрд╡ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдмреИрдЯрд░реА рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗред

рдХреНрдпрд╛ рдЖрдк рд╕рд╣рд╕рдВрдмрдВрдз рдХреА рдЗрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рд╛рд╣рд┐рддреНрдп рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХреВрдВ рдХрд┐ рдореИрдВ "рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╕рд╣реА" рд░рд╣реВрдВ?

рд╕реЗрдмреЗрд╕реНрдЯрд┐рдпрд╛рдиреЛ, рдЖрдк рдореБрдЭреЗ рдЕрдкрдиреА рд╢рд░реНрддреЛрдВ рдкрд░ рдПрдХ рдЪреБрдиреМрддреА рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЖрдк рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдПрд▓рд╕реАрдЬреА рдХреЗ рдЖрдВрддрд░рд┐рдХ рдЧреБрдгреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЬрд╣рд╛рдВ рдЖрддреНрдо-рд╕рдорд╛рдирддрд╛ рд╣реИред рдЖрдкрдХреЛ рдПрдХ рдЕрд░рд╛рдЬрдХ PRNG рдпрд╛ LFSR- рдЖрдзрд╛рд░рд┐рдд рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреАред

рд▓реЗрдХрд┐рди рдЕрдиреНрдп PRNG рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдХрдордЬреЛрд░ рд╕реНрдкреЙрдЯ рд╣реЛрдВрдЧреЗред

LFSR рдореЗрдВ рдЬрд╝реЗрд░реЛрд▓реИрдВрдб, рдЦрд╝рд░рд╛рдм рдЕрд╡рд╕реНрдерд╛рдПрдБ, рд╣рд╛рдорд┐рдВрдЧ-рд╡реЗрдЯ рдЗрд╢реНрдпреВ, рд░реИрдЦрд┐рдХрддрд╛, рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ xoshiro рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рд╕реЗ рд╕реАрдЦрд╛ рд╣реИ, рдХрднреА-рдХрднреА рдЕрдиреНрдп рд╡рд┐рдЪрд┐рддреНрд░рддрд╛рдПрдБ рдЬреИрд╕реЗ рджреЛрд╣рд░рд╛рд╡ рдХреЗ рд╕рд╛рде рдЕрдЬреАрдм рд╕рдорд╕реНрдпрд╛рдПрдВред

рдЕрд░рд╛рдЬрдХ PRNGs рдореЗрдВ рдЫреЛрдЯреЗ рдЪрдХреНрд░реЛрдВ рдХрд╛ рдЬреЛрдЦрд┐рдо рд╣реЛрддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрд╛рдЙрдВрдЯрд░ рд╡рд╛рд▓реЗ рд▓реЛрдЧ рдЗрд╕рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВ - рд╡реАрдЗрд▓ рдЕрдиреБрдХреНрд░рдо FTW!) рдФрд░ рдЙрдирдХреЗ рдЖрдВрддрд░рд┐рдХ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ред

рдпрджрд┐ рдЕрдиреБрдХреНрд░рдо рдУрд╡рд░рд▓реИрдк рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рд╣реИ, рдкрд░реАрдХреНрд╖рдг _always_ рд╡рд┐рдлрд▓ рд╣реЛрдЧрд╛ред рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рд╣рд┐рддреНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд┐ _always рд╡рд┐рдлрд▓_ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рд╣реИред

рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рдЪреВрдВрдХрд┐ рдЖрдк рджрд╛рд╡рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдкреАрд╕реАрдЬреА рдХреЗ рд╕рдорд╛рди рд╕рд╣рд╕рдВрдмрдВрдз рдкрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЬрд┐рд╕рдореЗрдВ рдЕрдиреБрдХреНрд░рдо рдУрд╡рд░рд▓реИрдкрд┐рдВрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреНрдп рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ), рдХреНрдпрд╛ рдЖрдк xoshiro256 ++ рдпрд╛ SFC64 рд╕реЗ, рд╕рд╣рд╕рдВрдмрджреНрдз, рдЧреИрд░-рдЕрддрд┐рд╡реНрдпрд╛рдкреА рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред ?

рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╡рд╛рд▓ рдЪрдХрдорд╛ рджреЗ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рдЖрдкрдХреЗ рджрд╛рд╡реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рднреА рдРрд╕рд╛ рд╕рдмреВрдд рд╣реИ, рддреЛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ред

рдЕрднреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдХрд╛рдо рдПрдХ PCG64DXSM BitGenerator рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, "рд╕рд╕реНрддреЗ рдЧреБрдгрдХ" рдХреЗ рд╕рд╛рде PCG64 рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ DXSM рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рдиред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реИ рдХрд┐ XSL-RR рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдПрдХ рдХрджрдо рдКрдкрд░ рд╣реИ рдЬреЛ рдЕрдм рд╣рдорд╛рд░реЗ PCG64 рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╣реИ, рд░рдирдЯрд╛рдЗрдо рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдиреБрдХрд╕рд╛рди рдХреЗ рдмрд┐рдирд╛ рдмреЗрд╣рддрд░ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдЖрд▓рд╛ рдореЗрдВ рдПрдХ рд╕реАрдзрд╛ рдЙрдиреНрдирдпрди рд╣реИ рдЬреЛ PCG64 BitGenerator s рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╣рдо рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ PCG64 рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ 64-рдмрд┐рдЯ "рд╕рд╕реНрддреЗ рдЧреБрдгрдХ" рдореЗрдВ рд╕рд┐рджреНрдз рджреЛрд╖ рд╣реИрдВред рдпрд╣ рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ:

рдбрдмреНрд▓реНрдпреВред рд╣реЙрд░рдореИрди рдФрд░ рдЬреАред рдбреЗрд░рдлреНрд▓рд┐рдВрдЧрд░, рдПрдХ рдкреЛрд░реНрдЯреЗрдмрд▓ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИ
рдЕрд╕реНрд╡реАрдХреГрддрд┐ рд╡рд┐рдзрд┐, рдПрд╕реАрдПрдо рдЯреНрд░рд╛рдВрд╕ред рдЧрдгрд┐рддред Softwред 19 (1993), рдирд╣реАрдВред 4, 489тАУ495ред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдорд╛рдкрд╛рдВрдХ рдХреЗ рд╡рд░реНрдЧрдореВрд▓ рд╕реЗ рдЫреЛрдЯреЗ рдЧреБрдгрдХ рдЕрдкрдиреЗ рд╡рд░реНрдгрдХреНрд░рдореАрдп рдЕрдВрдХ f their рдХреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реАрдорд╛ рд░рдЦрддреЗ рд╣реИрдВред

65-рдмрд┐рдЯ рдЧреБрдгрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реАрдорд╛ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рджреВрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрдХрд▓рдХ рд╕рд┐рд░реНрдл рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд "рдРрдб" рдСрдкрд░реЗрд╢рди рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛, рд╢рд╛рдпрдж рдЬрдирд░реЗрдЯрд░ рдХреА рдЧрддрд┐ рдХреЛ рднреА рдирд╣реАрдВ рдмрджрд▓ рд░рд╣рд╛ рд╣реИред

рдЧрд╛рдЗ рд╕реНрдЯреАрд▓ рдФрд░ рдореИрдВрдиреЗ рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╕реНрддреЗ рдЧреБрдгрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдгрдХреНрд░рдореАрдп рд╕реНрдХреЛрд░ рдХреА рдереЛрдбрд╝реА рдФрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╕рд╛рд░рдгреА рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛: https://arxiv.org/pdf/2001.05304.pdf ред рдмрдбрд╝рд╛ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди 64 рд╕реЗ 65 рдмрд┐рдЯреНрд╕ (рд░рд╛рдЬреНрдп рдХреЗ 128 рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдПрд▓рд╕реАрдЬреА рдХреЗ рд▓рд┐рдП) рдХреЗ рд▓рд┐рдП рдПрдХ рдпреЛрдЧреНрдп рдЕрдВрддрд░ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреЗрдкрд░ рдХреЗ рдЯреЗрдмрд▓ 7 рд╕реЗ рдЖрдкрдХреЛ 0x1d605bb58c8abbfd рдорд┐рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ f has рд╕реНрдХреЛрд░ 0.9919 рд╣реИред рдХреЛрдИ 64-рдмрд┐рдЯ рдЧреБрдгрдХ 0.9306 (рдХрд╛рдЧрдЬ рдореЗрдВ рдкреНрд░рдореЗрдп 4.1) рд╕реЗ рдЖрдЧреЗ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдорд┐рд╢реНрд░рдг рдФрд░ рд╕рдм рдХреБрдЫ рдХреЗ рдмрд╛рдж f mix рд╕реНрдХреЛрд░ рдореЗрдВ рд╕реБрдзрд╛рд░ рдПрдХ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдРрдб рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЖрдпрд╛рдо рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЬреЛ рдмрдбрд╝рд╛ рд╕реБрдзрд╛рд░ рдорд┐рд▓рд╛ рд╣реИ, рдЙрд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ (рдареАрдХ рд╣реИ, рд╣рдо рд╕реЛрдЪрддреЗ рд╣реИрдВ, рдпрд╛ рд╣рдордиреЗ рдкреЗрдкрд░ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реЛрдЧрд╛) рдпрд╣ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред

рд╕реЗрдмреЗрд╕реНрдЯрд┐рдпрд╛рдиреЛ, рдЖрдк рдореБрдЭреЗ рдЕрдкрдиреА рд╢рд░реНрддреЛрдВ рдкрд░ рдПрдХ рдЪреБрдиреМрддреА рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЖрдк рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдПрд▓рд╕реАрдЬреА рдХреЗ рдЖрдВрддрд░рд┐рдХ рдЧреБрдгреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЬрд╣рд╛рдВ рдЖрддреНрдо-рд╕рдорд╛рдирддрд╛ рд╣реИред рдЖрдкрдХреЛ рдПрдХ рдЕрд░рд╛рдЬрдХ PRNG рдпрд╛ LFSR- рдЖрдзрд╛рд░рд┐рдд рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреАред

рд╡рд╛рд╣, рд╡рд╣рд╛рдБ рдкрд╣реБрдБрдЪрдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рдордп рд▓рдЧрд╛!

LFSR рдореЗрдВ рдЬрд╝реЗрд░реЛрд▓реИрдВрдб, рдЦрд╝рд░рд╛рдм рдЕрд╡рд╕реНрдерд╛рдПрдБ, рд╣рд╛рдорд┐рдВрдЧ-рд╡реЗрдЯ рдЗрд╢реНрдпреВ, рд░реИрдЦрд┐рдХрддрд╛, рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ xoshiro рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рд╕реЗ рд╕реАрдЦрд╛ рд╣реИ, рдХрднреА-рдХрднреА рдЕрдиреНрдп рд╡рд┐рдЪрд┐рддреНрд░рддрд╛рдПрдБ рдЬреИрд╕реЗ рджреЛрд╣рд░рд╛рд╡ рдХреЗ рд╕рд╛рде рдЕрдЬреАрдм рд╕рдорд╕реНрдпрд╛рдПрдВред

рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВ- рдЗрд╕реАрд▓рд┐рдП рдЖрдкрдХреЛ рдЙрдирд╕реЗ рд╣рд╛рдерд╛рдкрд╛рдИ рдХрд░рдиреА рд╣реЛрдЧреАред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ LFSR рдФрд░ FтВВ- рд░реИрдЦрд┐рдХ рдЬрдирд░реЗрдЯрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪреАрдЬреЗрдВ рд╣реИрдВ; рд╕рдВрдмрдВрдзрд┐рдд, рд▓реЗрдХрд┐рди рдЕрд▓рдЧред

"рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рдХреЗ рд╕рд╛рде рдЕрдЬреАрдм рд╕рдорд╕реНрдпрд╛рдПрдВ", рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдПрдХ рдЧреИрд░-рддрдХрдиреАрдХреА рд╢рдмреНрдж рд╣реИ рдЬрд┐рд╕ рдкрд░ рдореИрдВ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдЕрд░рд╛рдЬрдХ PRNGs рдореЗрдВ рдЫреЛрдЯреЗ рдЪрдХреНрд░реЛрдВ рдХрд╛ рдЬреЛрдЦрд┐рдо рд╣реЛрддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрд╛рдЙрдВрдЯрд░ рд╡рд╛рд▓реЗ рд▓реЛрдЧ рдЗрд╕рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВ - рд╡реАрдЗрд▓ рдЕрдиреБрдХреНрд░рдо FTW!) рдФрд░ рдЙрдирдХреЗ рдЖрдВрддрд░рд┐рдХ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ред

[рдЕрджреНрдпрддрди: рдореИрдВ рдХреЛрд╖реНрдардХ рдХреЗ рдЕрд╡рд▓реЛрдХрди рд╕реЗ рдЪреВрдХ рдЧрдпрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рдЕрдкрдбреЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред]

рд╣рд╛рдВ, SFC64 рдореЗрдВ рдРрд╕реЗ рдореБрджреНрджреЗ рдирд╣реАрдВ рд╣реИрдВ (рдпрд╣ рдПрдХ рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ), рдЗрд╕рд▓рд┐рдП рдореИрдВ рдкреВрд░реА рд╢реНрд░реЗрдгреА рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдзреНрдпрд╛рди рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдЕрд░рд╛рдЬрдХ рдЬрдирд░реЗрдЯрд░ рд╣реИрдВ рдЬреЛ рдХрд┐ рд╕рд┐рджреНрдз рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ, рдмрдбрд╝реА рдЫреЛрдЯреА рдЪрдХреНрд░ рд▓рдВрдмрд╛рдИред

"рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рдХреЗ рд╕рд╛рде рдЕрдЬреАрдм рд╕рдорд╕реНрдпрд╛рдПрдВ", рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдПрдХ рдЧреИрд░-рддрдХрдиреАрдХреА рд╢рдмреНрдж рд╣реИ рдЬрд┐рд╕ рдкрд░ рдореИрдВ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рди рдХрд░ рдкрд╛рдирд╛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рд╕рд╣реА рд╢рдмреНрджрдЬрд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ - рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЪрд▓рд╛рдПрдВ рдФрд░ рдлрд┐рд░ рдмреЗрдЭрд┐рдЭрдХ рдореБрдЭреЗ рдЙрдЪрд┐рдд рд╢рдмреНрджрдЬрд╛рд▓ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдмрддрд╛рдПрдВ рдФрд░ рдлрд┐рд░ рдЬреЛ рднреА рдЯрд┐рдкреНрдкрдгреА рдЙрдкрдпреБрдХреНрдд рд▓рдЧреЗ, рдкреНрд░рджрд╛рди рдХрд░реЗрдВред рдореИрдВрдиреЗ рдХрд▓реНрдкрдирд╛ рдХреА рд╣реЛрдЧреА рдХрд┐ рдЖрдкрдиреЗ рдФрд░ рдбреЗрд╡рд┐рдб рдмреНрд▓реИрдХрдореИрди рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рд╣реЛрдЧреА, рдЬрдм рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ рдЖрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЙрд╕рдХреЗ рд╕рд╛рде рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЖрдкрдХреЛ рдЗрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддреЗ рд╣реБрдП рдХрднреА рдирд╣реАрдВ рджреЗрдЦрд╛ред

PRNGs рдХреА рдЪрд░реНрдЪрд╛ numpy рдСрдл-рдЯреЙрдкрд┐рдХ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдХреГрдкрдпрд╛ рдЙрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдордВрдЪреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдзрдиреНрдпрд╡рд╛рджред

@rkern - рдЬреЛ рдПрдХ рдХрд╕реМрдЯреА рдХреЗ рд░реВрдк рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рдЦреНрдд рд▓рдЧрддрд╛ рд╣реИред рдпрджрд┐ Numpy рдирд┐рд╣рд┐рддрд╛рд░реНрде рдореЗрдВ рдХреЛрдИ рдХрдореА рд╣реИ рдЬреЛ рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕ рдмрд╛рдд рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЬрд┐рд╕ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХрд╛ рдореИрдВ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╡рд╣ рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЬрдм рддрдХ рд╣рдо рдЙрд╕ рдкрд░ рдкреНрд░рдЧрддрд┐ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рддрдм рддрдХ рдореБрдЭреЗ рдХреЗрдВрджреНрд░рд┐рдд рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рддрдЪреАрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реНрдпрд╛рдкрдХ рд╕рдВрджрд░реНрдн рдХреЛ рд╕рдордЭрдирд╛ рдорджрджрдЧрд╛рд░ рд╣реИред рд╕реЗрдмреЗрд╕реНрдЯрд┐рдпрд╛рдиреЛ рдореЗрдВ рдкреАрд╕реАрдЬреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдмрд╛рдд рд╣реИ рдФрд░ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рд░реЗрд▓рд┐рдВрдЧ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди рджрд┐рдиреЛрдВ рдХреБрдЫ рд▓реЛрдЧ рд╣рдо рджреЛрдиреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдЖрдБрдЦреЛрдВ рдХреЛ рд░реЛрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ "рдЖрдк рджреЛрдиреЛрдВ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рдорд╛рди рдмреБрд░реЗ рд╣реИрдВ" рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЙрдирдХреЗ PRNGs рдХреЛ рднреА рдХреНрд░рд┐рдЯрд┐рдХ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВрдиреЗ рдРрд╕рд╛ рдХреЗрд╡рд▓ рддрдм рдХрд┐рдпрд╛ рдЬрдм рд╡рд╣ рджрд╛рд╡рд╛ рдХрд░рдиреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЪрд▓рд╛ рдЧрдпрд╛ рдХрд┐ рдореИрдВ рдЙрд╕рдХреЗ рд╕рд╛рдорд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрднреА рдмрд╛рдд рдирд╣реАрдВ рдХрд░рдХреЗ рдХреБрдЫ рдЫрд┐рдкрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ (рдЬрдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдордп / рдЭреБрдХрд╛рд╡ рдирд╣реАрдВ рдерд╛ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдпрд╣ рдорд╛рди рд▓рд┐рдпрд╛ рдерд╛ рдХрд┐ рд╡реЗ рдареАрдХ рдереЗ)ред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдирдХреА рдЖрд▓реЛрдЪрдирд╛рдПрдВ рдЙрдкрдпреЛрдЧреА рд╣реИрдВ, рдФрд░ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдХрд░ рдЕрдкрдирд╛ рдмрд╣реБрдд рд╕рд╛рд░рд╛ рдЬреАрд╡рди рдмрд┐рддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рдирдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рдкреНрд░рддрд┐рдХреВрд▓рддрд╛ рд╣реИред рд╡рд╣ рдкреАрд╕реАрдЬреА рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЬреНрдЮрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрд░рдПрдирдЬреА рдкрд░реАрдХреНрд╖рдХ рдФрд░ рдЕрд╕рдлрд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдХрд┐рддрдирд╛ рдбрд░рд╛рд╡рдирд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рдЙрдЪрд┐рдд рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рдорд╛рди рдкреНрд░рддрд┐рдХреВрд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрдИ рдЕрдиреНрдп рдЬрдирд░реЗрдЯрд░ рдХреЛ рднреА рдпрд╛рддреНрд░рд╛ рдХрд░реЗрдЧрд╛ рдФрд░ рдпрд╣ рдХрд┐ рд╡рд╣ рдкреАрд╕реАрдЬреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдЪрд┐рдВрддрд╛рдПрдВ рдЙрдард╛рддрд╛ рд╣реИ рд╡рд╣ рдЕрдиреНрдп рдкреАрдврд╝реА рдХреА рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрдЧреА, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкреАрдврд╝реА рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреЗрдЦрд╛ рд╣реИред XorWow рдХреА рддрд░рд╣, рдФрд░ рдореИрдВ рдЕрдХреНрд╕рд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ SplitMix рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдиреАрдЪреЗ рдХрд░реВрдВрдЧрд╛ред (рд╣рдордореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рдореЗрдВ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдирд┐рд╡реЗрд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░реВрдБрдЧрд╛ред)

рд╣рдо рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдкрд░ рдбрд░рд╛рд╡рдирд╛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдФрд░ рдпрд╣ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдЯреНрд░реАрдо рдирд┐рд░рдВрддрд░ рдХреЗ рд╕рд╛рде, рдпрджрд┐ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ 35185-рд╡реЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ PRNG рдЯреЗрд╕реНрдЯ рд╕реВрдЯ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЕрд░реЗ рдирд╣реАрдВ! рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ рдПрдХ рдХрд╛рдЙрдВрдЯрд░ (рд╡реЗрдЗрд▓ рдЕрдиреБрдХреНрд░рдо!) 0x9e3779b97f4a7c15 (╧Ж, рд╕реНрд╡рд░реНрдг рдЕрдиреБрдкрд╛рдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдмрдврд╝рд╛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди 35185 * 0x9e3779b97f4a7c15 = 0x86a100000c480245 , рдЬреЛ рдХреЗрд╡рд▓ рд╣реИ 14 рдмрд┐рдЯреНрд╕ рд╕реЗрдЯ рдФрд░ рдмреАрдЪ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╕реНрд╡рд╛рдеред рдпрд╛ рдпрджрд┐ рд╣рдо рд╣рд░ 360998717-рд╡реЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо 0x48620000800401 рдХреА рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддреЗ рд╣реИрдВ, рдЬреЛ рдХреЗрд╡рд▓ 8 рдмрд┐рдЯреНрд╕ рдЬреЛрдбрд╝реЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореБрдЦреМрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрдард┐рди рд╣реИред ред

рд╣рдо рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбрд░рд╛рдирд╛-рднрдбрд╝рдХрд╛рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрдЧрд╛, рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ рджреЛ рдзрд╛рд░рд╛рдПрдБ рд╣реИрдВ, рдПрдХ рдЬреЛ рдПрдбрд┐рдХреНрдЯрд┐рд╡ рд╕реНрдерд┐рд░ 0x9e3779b97f4a7c15 рдФрд░ 0xdaa66d2c7ddf743f , рдЕрдЧрд░ рд╣рдо рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рд╣рдореЗрдВ рдЦрд╛рдорд┐рдпрд╛рдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреА рдПрдХ PRNG рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ !!! рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рджреВрд╕рд░рд╛ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рд╕рд┐рд░реНрдл 3 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╣реИред

рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЕрдЧрд░ рдХрд┐рд╕реА рдиреЗ рдХрд╣рд╛ рдХрд┐ "рдореИрдВ рдЖрдкрдХреЛ рджреЛрдиреЛрдВ рд╕реНрдЯреНрд░реАрдо рджреЗрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдЙрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рдбрд░рд╛рд╡рдирд╛ рдХрд░реЗрдВ!", рдФрд░ рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЙрдирдХрд╛ рдЖрдзрд╛рд░ were ( 0x243f6a8885a308d3 ) рдФрд░ _e_ ( 0xb7e151628aed2a6b ), рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЪрд▓реЛ рдХреБрдЫ рдФрд░ рдбрд░рд╛рдиреЗ-рднрдбрд╝рдХрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВ рдФрд░ рдкрд╛рдИ рд╕реНрдЯреНрд░реАрдо рд╕реЗ рд╣рд░ 6561221343-рд╡реЗрдВ рдЖрдЗрдЯрдо рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдИ рд╕реНрдЯреНрд░реАрдо рдФрд░ рдХрдо-рдФрд░-рдмреЗрд▓реЗрдЙрдб рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ 6663276199-th рдЖрдЗрдЯрдо рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдорд┐рдХреНрд╕ рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рджреЛ рд╕рдорд╛рди рдкреИрджрд╛ рдХрд░рддреЗ рд╣реИрдВ рджреГрд╢реНрдпреЛрдВред рдФрд░ _worse_, рдореИрдВ рддрдм рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рд╕реНрдЯреНрд░реАрдо рдП рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреВрдж рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреНрд░реАрдо рдмреА рдкрд░ рдПрдХ рд╣реА рдЖрдЙрдЯрдкреБрдЯ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд┐рд▓рд╛рди рдХреВрджрдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 2 ^ 64 рддрд░реАрдХреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рд╕рд╣рд╕рдВрдмрдВрдзреА рд╣реИрдВ !!! (рдФрд░ рд╣рдо рдХрд┐рд╕реА рднреА рджреЛ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, _ рдФрд░ _e_ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдирд╣реАрдВ рдерд╛ред)

PCG рдкрд░ рд▓реМрдЯрдирд╛, рд╕реЗрдмрд╕реНрдЯрд┐рдпрд╛рдиреЛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рджреЛ PCG64 XSH RR рдЬреЗрдирд░реЗрдЯрд░реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдореИрдЪрд┐рдВрдЧ рдЖрдЙрдЯрдкреБрдЯ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рд╣реЛ рдЬрд╛рдПред рдЕрдЧрд░ рд╣рдо рдПрдХ рдЫреЛрдЯреА рд░рд╛рд╢рд┐ рд╕реЗ PRNG рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╕рд╣реА рд╕рдВрд░реЗрдЦрдг рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд▓рдХ рддреЛрдбрд╝рдирд╛, рдХреБрдЫ рднреА рд╕рдВрджрд┐рдЧреНрдз рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рджреВрд╕рд░реА рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдкреНрд░рддрд┐рдХреВрд▓ рдкрд░реАрдХреНрд╖рдг (рд╕реЗрдмреЗрд╕реНрдЯрд┐рдпрд╛рдиреЛ рдкрд░ рдмреЛрдЭ рдбрд╛рд▓рдирд╛) PCG64 XSH RR рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ рдЬреЛ рдЙрд╕рдХреЗ рджрд╛рд╡реЗ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕рд╣рд╕рдВрдмрджреНрдз рд╣реИрдВ рд▓реЗрдХрд┐рди рд╣рдо рдЙрд╕реЗ рдареАрдХ рд╕реЗ рдирд╣реАрдВ рдмрддрд╛рддреЗ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рдЧрдардмрдВрдзрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рд╡реЗ рд╕рд┐рд░реНрдл рд╣реИрдВ рд╕рд╣реА рдкрдбрд╝реЛрд╕ рдореЗрдВ)ред рдЙрдирдХрд╛ рдХрд╛рдо рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡реЗ рдкрд░рд╕реНрдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рддрддреНрдХрд╛рд▓ рдЖрдЧ рд▓рдЧрд╛рдиреЗ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдПрдХ рдореБрджреНрджрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рддрд░рдл, рдбреАрдПрдХреНрд╕рдПрд╕рдПрдо рд╕рдВрд╕реНрдХрд░рдг рдмреЗрд╣рддрд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдореИрдВ рдРрд╕рд╛ рдХрд░реВрдВрдЧрд╛ рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд╢ рд╣реИрдВред

рдкреБрдирд╢реНрдЪ рдЖрдк рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЕрд╕рд▓реА рдирдВрдмрд░ рд╕реЗ рдореИрдЬрд┐рдХ рд╡рд╛рдЗрд▓ рдПрдбрд┐рдХреНрдЯрд┐рд╡ рд╕реНрдерд┐рд░рд╛рдВрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

WeylConst[r_,bits_] = BitOr[Floor[(r-Floor[r])*2^bits],1]

рд╡рд╣ рдЧрдгрд┐рддрдЬреНрдЮ рд╣реИ, рдореИрдВ рдЕрднреНрдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЫреЛрдбрд╝ рджреВрдБрдЧрд╛ред

рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдореИрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХреЗ рд▓рд┐рдП рдирд┐рдЪрд▓реЗ-рдмрд┐рдЯ рдЯрдХрд░рд╛рд╡реЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реВрдВред

PCG64 XSL-RR рдФрд░ рдирд┐рдЪрд▓реЗ -58-рдмрд┐рдЯ рдЯрдХреНрдХрд░ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдо

тЭп ./pcg64_correlations.py -m 58 | stdbuf -oL ./RNG_test stdin64 -tf 2 -te 1 -tlmaxonly -multithreaded
s0 = 0b01110010100110011101000110010010101111111001100011001011001011111001001110101010011101111101001101011000011100001111111111100001
s1 = 0b10110001011001100111100010000110101110011010101010011011010100011001011111001100010001101001001011010010110101001011101111111100
dist = 0x2eb6ec432b0ea0f4fc00000000000000
[
    {
        "bit_generator": "PCG64",
        "state": {
            "state": 152330663589051481538402839025803132897,
            "inc": 228410650821285501905570422998802152525
        },
        "has_uint32": 0,
        "uinteger": 0
    },
    {
        "bit_generator": "PCG64",
        "state": {
            "state": 235805414096687854712168706130903874556,
            "inc": 70910205337619270663569052684874994465
        },
        "has_uint32": 0,
        "uinteger": 0
    }
]
RNG_test using PractRand version 0.93
RNG = RNG_stdin64, seed = 0x12d551b8
test set = expanded, folding = extra

rng=RNG_stdin64, seed=0x12d551b8
length= 128 megabytes (2^27 bytes), time= 2.8 seconds
  no anomalies in 891 test result(s)

rng=RNG_stdin64, seed=0x12d551b8
length= 256 megabytes (2^28 bytes), time= 9.4 seconds
  no anomalies in 938 test result(s)

rng=RNG_stdin64, seed=0x12d551b8
length= 512 megabytes (2^29 bytes), time= 18.1 seconds
  no anomalies in 985 test result(s)

rng=RNG_stdin64, seed=0x12d551b8
length= 1 gigabyte (2^30 bytes), time= 31.2 seconds
  Test Name                         Raw       Processed     Evaluation
  [Low1/8]FPF-14+6/16:cross         R=  +4.9  p =  1.7e-4   unusual          
  [Low4/16]FPF-14+6/16:all          R=  +8.4  p =  2.3e-7   very suspicious  
  [Low4/16]FPF-14+6/16:all2         R=  +8.3  p =  8.1e-5   unusual          
  [Low8/32]FPF-14+6/32:all          R=  +6.3  p =  2.1e-5   mildly suspicious
  [Low8/32]FPF-14+6/16:all          R=  +5.7  p =  8.0e-5   unusual          
  ...and 1034 test result(s) without anomalies

rng=RNG_stdin64, seed=0x12d551b8
length= 2 gigabytes (2^31 bytes), time= 52.7 seconds
  Test Name                         Raw       Processed     Evaluation
  [Low4/16]FPF-14+6/32:all          R=  +7.4  p =  2.0e-6   suspicious       
  [Low4/16]FPF-14+6/16:(0,14-0)     R=  +7.7  p =  9.4e-7   unusual          
  [Low4/16]FPF-14+6/16:all          R=  +8.0  p =  5.9e-7   suspicious       
  [Low4/16]FPF-14+6/16:all2         R= +12.2  p =  2.1e-6   mildly suspicious
  [Low4/16]FPF-14+6/4:(0,14-0)      R=  +7.9  p =  6.3e-7   mildly suspicious
  [Low4/16]FPF-14+6/4:all           R=  +5.8  p =  6.7e-5   unusual          
  [Low4/16]FPF-14+6/4:all2          R= +11.5  p =  3.1e-6   mildly suspicious
  [Low8/32]FPF-14+6/32:(0,14-0)     R=  +7.8  p =  8.4e-7   unusual          
  [Low8/32]FPF-14+6/32:all          R=  +7.3  p =  2.3e-6   suspicious       
  [Low8/32]FPF-14+6/32:all2         R= +14.3  p =  3.8e-7   suspicious       
  [Low8/32]FPF-14+6/16:(0,14-0)     R=  +7.7  p =  8.8e-7   unusual          
  [Low8/32]FPF-14+6/16:(1,14-0)     R=  +7.7  p =  9.3e-7   unusual          
  [Low8/32]FPF-14+6/16:all          R=  +6.9  p =  5.3e-6   mildly suspicious
  [Low8/32]FPF-14+6/16:all2         R= +18.3  p =  8.0e-9   very suspicious  
  ...and 1078 test result(s) without anomalies

rng=RNG_stdin64, seed=0x12d551b8
length= 4 gigabytes (2^32 bytes), time= 90.2 seconds
  Test Name                         Raw       Processed     Evaluation
  [Low1/8]BCFN_FF(2+0):freq         R= +14.8  p~=   6e-18     FAIL !         
  [Low1/8]BCFN_FF(2+1):freq         R=  +7.4  p~=   1e-6    mildly suspicious
  [Low1/8]FPF-14+6/16:cross         R=  +8.4  p =  2.1e-7   very suspicious  
  [Low4/16]FPF-14+6/32:(0,14-0)     R=  +8.9  p =  8.1e-8   mildly suspicious
  [Low4/16]FPF-14+6/32:(1,14-0)     R=  +8.5  p =  1.9e-7   mildly suspicious
  [Low4/16]FPF-14+6/32:all          R=  +9.4  p =  2.4e-8   very suspicious  
  [Low4/16]FPF-14+6/32:all2         R= +23.9  p =  5.2e-11   VERY SUSPICIOUS 
  [Low4/16]FPF-14+6/16:(0,14-0)     R= +13.8  p =  2.2e-12   VERY SUSPICIOUS 
  [Low4/16]FPF-14+6/16:(1,14-0)     R= +10.0  p =  7.3e-9   suspicious       
  [Low4/16]FPF-14+6/16:all          R= +12.1  p =  8.0e-11   VERY SUSPICIOUS 
  [Low4/16]FPF-14+6/16:all2         R= +52.5  p =  1.3e-22    FAIL !!        
  [Low4/16]FPF-14+6/4:(0,14-0)      R= +12.2  p =  7.0e-11   VERY SUSPICIOUS 
  [Low4/16]FPF-14+6/4:all           R=  +7.1  p =  3.7e-6   mildly suspicious
  [Low4/16]FPF-14+6/4:all2          R= +29.8  p =  7.1e-14    FAIL           
  [Low4/16]FPF-14+6/4:cross         R=  +5.3  p =  7.8e-5   unusual          
  [Low4/32]FPF-14+6/32:(0,14-0)     R=  +7.6  p =  1.3e-6   unusual          
  [Low4/32]FPF-14+6/32:all          R=  +6.0  p =  4.4e-5   unusual          
  [Low4/32]FPF-14+6/32:all2         R=  +9.4  p =  2.9e-5   unusual          
  [Low4/32]FPF-14+6/16:(0,14-0)     R=  +7.3  p =  2.5e-6   unusual          
  [Low4/32]FPF-14+6/16:all          R=  +6.5  p =  1.4e-5   mildly suspicious
  [Low4/32]FPF-14+6/16:all2         R=  +8.2  p =  8.0e-5   unusual          
  [Low8/32]FPF-14+6/32:(0,14-0)     R= +17.2  p =  1.7e-15    FAIL           
  [Low8/32]FPF-14+6/32:(1,14-0)     R= +12.7  p =  2.3e-11   VERY SUSPICIOUS 
  [Low8/32]FPF-14+6/32:all          R= +15.3  p =  7.9e-14    FAIL           
  [Low8/32]FPF-14+6/32:all2         R= +86.1  p =  1.2e-35    FAIL !!!       
  [Low8/32]FPF-14+6/16:(0,14-0)     R= +16.8  p =  3.5e-15    FAIL           
  [Low8/32]FPF-14+6/16:(1,14-0)     R= +12.2  p =  6.6e-11   VERY SUSPICIOUS 
  [Low8/32]FPF-14+6/16:all          R= +13.1  p =  8.9e-12   VERY SUSPICIOUS 
  [Low8/32]FPF-14+6/16:all2         R= +82.1  p =  1.7e-34    FAIL !!!       
  [Low8/32]FPF-14+6/4:(0,14-0)      R= +12.8  p =  2.0e-11   VERY SUSPICIOUS 
  [Low8/32]FPF-14+6/4:(1,14-0)      R=  +9.4  p =  2.5e-8   suspicious       
  [Low8/32]FPF-14+6/4:all           R= +10.5  p =  2.2e-9    VERY SUSPICIOUS 
  [Low8/32]FPF-14+6/4:all2          R= +42.0  p =  5.8e-19    FAIL !         
  ...and 1118 test result(s) without anomalies

PCG64 DXSM рдФрд░ рдХрдо-64-рдмрд┐рдЯ рдЯрдХреНрдХрд░ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдо (рддреЗрдЬреА рд╕реЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рднрдбрд╝рдХрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдХреЛрдИ рдирд╣реАрдВ рджрд┐рдЦрддрд╛)

тЭп ./pcg64_correlations.py -m 64 --dxsm | stdbuf -oL ./RNG_test stdin64 -tf 2 -te 1 -tlmaxonly -multithreaded
s0 = 0b10001000010110111101010101010101111100100011011111011111011111001011110101111100101101101100110101110001101101111111010101111111
s1 = 0b11000101110100011001011000001110100001001111001001100101010000101100011001010111011001100000010010011100101110001110101000011100
dist = 0x3a26b19c91e6da1d0000000000000000
[
    {
        "bit_generator": "PCG64DXSM",
        "state": {
            "state": 181251833403477538233003277050491434367,
            "inc": 46073632738916603716779705377640239269
        },
        "has_uint32": 0,
        "uinteger": 0
    },
    {
        "bit_generator": "PCG64DXSM",
        "state": {
            "state": 262946148724842088422233355148768897564,
            "inc": 125105549038853892415237434774494719583
        },
        "has_uint32": 0,
        "uinteger": 0
    }
]
RNG_test using PractRand version 0.93
RNG = RNG_stdin64, seed = 0x85cea9
test set = expanded, folding = extra

rng=RNG_stdin64, seed=0x85cea9
length= 128 megabytes (2^27 bytes), time= 2.6 seconds
  no anomalies in 891 test result(s)

rng=RNG_stdin64, seed=0x85cea9
length= 256 megabytes (2^28 bytes), time= 9.4 seconds
  no anomalies in 938 test result(s)

rng=RNG_stdin64, seed=0x85cea9
length= 512 megabytes (2^29 bytes), time= 18.5 seconds
  no anomalies in 985 test result(s)

rng=RNG_stdin64, seed=0x85cea9
length= 1 gigabyte (2^30 bytes), time= 32.3 seconds
  Test Name                         Raw       Processed     Evaluation
  [Low4/32]BCFN_FF(2+3,13-3,T)      R=  -8.3  p =1-9.5e-5   unusual          
  ...and 1035 test result(s) without anomalies

rng=RNG_stdin64, seed=0x85cea9
length= 2 gigabytes (2^31 bytes), time= 55.8 seconds
  no anomalies in 1092 test result(s)

rng=RNG_stdin64, seed=0x85cea9
length= 4 gigabytes (2^32 bytes), time= 93.1 seconds
  no anomalies in 1154 test result(s)

rng=RNG_stdin64, seed=0x85cea9
length= 8 gigabytes (2^33 bytes), time= 175 seconds
  no anomalies in 1222 test result(s)

rng=RNG_stdin64, seed=0x85cea9
length= 16 gigabytes (2^34 bytes), time= 326 seconds
  no anomalies in 1302 test result(s)

rng=RNG_stdin64, seed=0x85cea9
length= 32 gigabytes (2^35 bytes), time= 594 seconds
  no anomalies in 1359 test result(s)

rng=RNG_stdin64, seed=0x85cea9
length= 64 gigabytes (2^36 bytes), time= 1194 seconds
  no anomalies in 1434 test result(s)

rng=RNG_stdin64, seed=0x85cea9
length= 128 gigabytes (2^37 bytes), time= 2334 seconds
  no anomalies in 1506 test result(s)
...

@ рдХреНрд░реЗрдВрдХ , рдЕрдкрдирд╛ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдкрд░реАрдХреНрд╖рдХ рдореЗрдВ рдЗрдВрдЯрд░рд▓реЗрд╕реНрдб рдЖрдЙрдЯрдкреБрдЯ рдлреАрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд┐рд░рдЫрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рдирд╛ рд╢рд┐рдХреНрд╖рд╛рдкреНрд░рдж рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рдереЛрдбрд╝рд╛ рдЦреЛрдЬрд╛ред

рд╣рд╛рдБ, рдореИрдВрдиреЗ рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ bg0.advance(N) рд╡рд┐рднрд┐рдиреНрди N рд▓рд┐рдП рдЕрдВрддрд┐рдо return рдбрд╛рд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдЪрд▓реЗ -64-рдмрд┐рдЯ рдЯрдХреНрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдХрд┐ рдореБрдЭреЗ рдХреБрдЫ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред 16 рддрд░рд╣ рдЫреЛрдЯреЗ рдмрджрд▓рд╛рд╡ 128 32 GiB рдХреЛ рд╡рд┐рдлрд▓рддрд╛ рдХреЛ рд▓рдореНрдмрд╛ рдЦреАрдВрдЪрддреЗ рд╣реИрдВред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдмрд┐рдЯрдЧреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ PCG64 DXSM рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЕрдВрддрддрдГ рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реНрдпрд╛рдкрдХ рд╕рдВрджрд░реНрдн рдХреЛ рд╕рдордЭрдирд╛ рдорджрджрдЧрд╛рд░ рд╣реИред рд╕реЗрдмреЗрд╕реНрдЯрд┐рдпрд╛рдиреЛ рдореЗрдВ рдкреАрд╕реАрдЬреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдмрд╛рдд рд╣реИ рдФрд░ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рд░реЗрд▓рд┐рдВрдЧ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди рджрд┐рдиреЛрдВ рдХреБрдЫ рд▓реЛрдЧ рд╣рдо рджреЛрдиреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдЖрдБрдЦреЛрдВ рдХреЛ рд░реЛрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ "рдЖрдк рджреЛрдиреЛрдВ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рдорд╛рди рдмреБрд░реЗ рд╣реИрдВ" рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЙрдирдХреЗ PRNGs рдХреЛ рднреА рдХреНрд░рд┐рдЯрд┐рдХ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВрдиреЗ рдРрд╕рд╛ рдХреЗрд╡рд▓ рддрдм рдХрд┐рдпрд╛ рдЬрдм рд╡рд╣ рджрд╛рд╡рд╛ рдХрд░рдиреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЪрд▓рд╛ рдЧрдпрд╛ рдХрд┐ рдореИрдВ рдЙрд╕рдХреЗ рд╕рд╛рдорд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрднреА рдмрд╛рдд рдирд╣реАрдВ рдХрд░рдХреЗ рдХреБрдЫ рдЫрд┐рдкрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ (рдЬрдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдордп / рдЭреБрдХрд╛рд╡ рдирд╣реАрдВ рдерд╛ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдпрд╣ рдорд╛рди рд▓рд┐рдпрд╛ рдерд╛ рдХрд┐ рд╡реЗ рдареАрдХ рдереЗ)ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рд╡рд┐рдЪрд╛рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдЪрд┐рдд рд╣реИрдВред

рдмрд┐рдирд╛ рдХрд┐рд╕реА рдпреЛрдЧреНрдпрддрд╛ рдХреЗ рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдмреВрдд рдХреЗ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдХрд╛рдо (рдЬреИрд╕реЗ, рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕) рдкрд░ рд╣рдорд▓рд╛ рдХрд░рдиреЗ рдкрд░ рдЬреЛрд░ рджреЗрдиреЗ рд╕реЗ рдкреАрд╕реАрдЬреА рдЧрдбрд╝рдмрдбрд╝, рдпрд╛ рдирдореНрдкреА рдХреЗ рдЬрдирд░реЗрдЯрд░ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдмреЗрд╣рддрд░ рдЧреБрдгрдХ, рдпрд╛ рдПрдХ рдмреЗрд╣рддрд░ рдбрд┐рдЬрд╝рд╛рдЗрди рд╡рд╛рд▓рд╛ рд╕реНрдХреНрд░реИрдореНрдмрд▓рд░, рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рдЕрднреА рднреА рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рдореЗрдВ рд╕рд╣рд╕рдВрдмрдВрдз рджрд┐рдЦрд╛рдиреЗ рд╡рд╛рд▓реА рдкрд░реАрдХреНрд╖рд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдЯреНрд░реАрдо рдЪреБрди рд╕рдХрддрд╛ рд╣реИред рдмрд╕ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛, рдирдореНрдкреА рдХреЗ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рдмрдпрд╛рди рд╕рд╛рдмрд┐рдд рдХрд┐рдпрд╛

тИАc тИАd тИГx тИАy рд╕рд╣рд╕рдВрдмрджреНрдз

рдЬрд╣рд╛рдБ c, d рд╡реЗрддрди рд╡реГрджреНрдзрд┐ ("рдзрд╛рд░рд╛рдПрдБ") рд╣реИрдВ, рдФрд░ x, y рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛рдПрдБ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, 2 ^ 72 y рдХреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдк рдХреИрд╕реЗ рд╕реА, рдбреА рдФрд░ рдПрдХреНрд╕ рдЪреБрдирддреЗ рд╣реИрдВ, 2 ^ 72 y рдХреЗ рд╕рд╣рд╕рдВрдмрдВрдз рджрд┐рдЦрд╛ рд░рд╣реЗ рд╣реИрдВред

рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдХрдерд┐рдд рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдб рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐

тИГc тИГd тИГx тИГy рд╕рд╣рд╕рдВрдмрджреНрдз

рдпрд╣реА рд╣реИ, рдкреНрд░рддрд┐рдХреВрд▓ рд╕реА, рдбреА, рдПрдХреНрд╕ рдФрд░ рд╡рд╛рдИ рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рдЖрдк рд╕рд╣рд╕рдВрдмрдВрдз рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рджреЛ рдмрдпрд╛рдиреЛрдВ рдореЗрдВ рддрд╛рдХрдд рдХрд╛ рдЕрдВрддрд░ рдХрд╛рдлреА рдЪреМрдВрдХрд╛ рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рджреЛ рдмрдпрд╛рдиреЛрдВ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдЧрд▓рдд рд╣реИред

@vigna рдХреЛ рд╣рдорд╛рд░реЗ рдЖрдЪрд╛рд░ рд╕рдВрд╣рд┐рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ @mattip рдФрд░ @rkern рджреНрд╡рд╛рд░рд╛ рдЕрдм рддрдХ рджреЛ рдмрд╛рд░ рдЪреЗрддрд╛рд╡рдиреА рджреА рдЬрд╛ рдЪреБрдХреА рд╣реИред "рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдХрд╛рдо рдХреЛ рдЬреЛрд░ рджреЗрдирд╛" рдФрд░ "рджреЛ рдмрдпрд╛рдиреЛрдВ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рд╢реБрджреНрдз рдПрдлрдпреВрдбреА рд╣реИ" рдЬреИрд╕реА рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдареАрдХ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдкрд░ рдЕрдкрдиреА рдЕрдВрддрд┐рдо рдЪреЗрддрд╛рд╡рдиреА рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдХреГрдкрдпрд╛ рдЕрдкрдирд╛ рд╕реНрд╡рд░ рдмрджрд▓реЗрдВ рдпрд╛ рд╣рдо рдЖрдкрдХреЛ _will_ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рдПрдВрдЧреЗред рддрдХрдиреАрдХреА рддрд░реНрдХ рдЕрднреА рднреА рд╕реНрд╡рд╛рдЧрдд рдХрд░рддреЗ рд╣реИрдВ, рдХреБрдЫ рдФрд░ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдирд╣реАрдВ рд╣реИред

рдореИрдВрдиреЗ рдЙрди рднрд╛рд╡реЛрдВ рдХреА рдЬрдЧрд╣ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬреЛ рддрдЯрд╕реНрде рд╣реИрдВред рдореБрдЭреЗ рдЕрднреА рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рддрд┐рднрд╛рдЧреА рдкрд░ рд╣рдорд▓рд╛ рдХрд░рдирд╛ ("рд╕реЗрдмрд╕реНрдЯрд┐рдпрд╛рдиреЛ рдореЗрдВ рдкреАрд╕реАрдЬреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рд╕реА рдмрд╛рдд рд╣реИ рдФрд░ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рд░реЗрд▓рд┐рдВрдЧ рд╣реИ") рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдЪрд┐рдд рд╣реИред рдореБрдЭреЗ рдмрд╣реБрдд рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рддреБрдореНрд╣рд╛рд░реЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИред

рддреАрд╕рд░реА рдФрд░ рдЖрдЦрд┐рд░реА рдмрд╛рд░, рджреЛрдиреЛрдВ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛, рдореБрдЭреЗ рдереЛрдбрд╝реА рд╕реА рднреА рдорджрдж рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИред рдореИрдВ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЛ рдХреНрдпреЛрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрджрд░реНрдн рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдХрд┐ рдЖрдк рджреВрд╕рд░реЗ рдХреЛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреГрдкрдпрд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЗрдВ рдХрд┐ рдореИрдВ рдЖрдкрдХреЛ рд╕рдЪ рдмрддрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдореБрдЭреЗ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рдкреНрд░рджрд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдпрд╣рд╛рдВ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдЖрдк рджреЛрдиреЛрдВ рдХреА рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯреНрд╕ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВред

рдореИрдВрдиреЗ рдЙрди рднрд╛рд╡реЛрдВ рдХреА рдЬрдЧрд╣ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬреЛ рддрдЯрд╕реНрде рд╣реИрдВред

рдзрдиреНрдпрд╡рд╛рджред

рдореБрдЭреЗ рдЕрднреА рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рддрд┐рднрд╛рдЧреА рдкрд░ рд╣рдорд▓рд╛ рдХрд░рдирд╛ ("рд╕реЗрдмрд╕реНрдЯрд┐рдпрд╛рдиреЛ рдореЗрдВ рдкреАрд╕реАрдЬреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рд╕реА рдмрд╛рдд рд╣реИ рдФрд░ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рд░реЗрд▓рд┐рдВрдЧ рд╣реИ") рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдЪрд┐рдд рд╣реИред рдореБрдЭреЗ рдмрд╣реБрдд рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рддреБрдореНрд╣рд╛рд░реЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╛ рддреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЙрд╕ рд╕рдВрджреЗрд╢ рдХрд╛ рд╕реНрд╡рд░ рд▓рдЧрднрдЧ рдЙрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред

рдпрджрд┐ рдЖрдк рджреЛрдиреЛрдВ рд░рдЪрдирд╛рддреНрдордХ рдХрдердиреЛрдВ @vigna рдФрд░ @imneme рдкрд░ рдЪрд┐рдкрдХ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рдЗрд╕рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХрд░реВрдБрдЧрд╛ред

рдареАрдХред рдЪрд▓реЛ рдЦрд░реЛрдВрдЪ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ: рдЖрдк рд╕реБрд╡рд┐рдзрд╛ рдФрд░ рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдкрд╛рд╡рд░-рдЯреВ -2 рдорд╛рдкрд╛рдВрдХ рдХреЗ рд╕рд╛рде рдПрд▓рд╕реАрдЬреА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЬрдирд░реЗрдЯрд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕рд╛рд╣рд┐рддреНрдп рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрд▓рд╕реАрдЬреА рдпреЛрдЬрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдзрд╛рд░рд╛рдПрдБ рдЖрдкрдХреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд▓реЗ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдЕрднреА рд╣реЛрддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдк рдпрд╣реА рдЪрд╛рд╣рддреЗ рд╣реИрдВред

128-рдмрд┐рдЯ рд╕реНрдЯреЗрдЯ рдФрд░ рдПрдХ рдЕрдЪреНрдЫреЗ рдЧреБрдгрдХ (рдХрдо рд╕реЗ рдХрдо 65 рдмрд┐рдЯреНрд╕) рдХреЗ рд╕рд╛рде рдПрдХ LCG рдХреНрдпреЛрдВ рди рд▓реЗрдВ рдФрд░ рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рд╕реЗ рдорд┐рдХреНрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдКрдкрд░реА рдмрд┐рдЯреНрд╕ рдХреЛ рдЦрд░рд╛рдм рдХрд░ рджреЗрдВ, рдЬрд┐рд╕рдХрд╛ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ (рд╣реИрд╢рд┐рдВрдЧ, PRNG, рдЖрджрд┐) рдореЗрдВ рднрд╛рд░реА рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрддреНрдХреГрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рджреЗ рд░рд╣реЗ рд╣реИрдВ?

рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдЧрддрд┐ рдореЗрдВ рдЕрдВрддрд░ рдорд╛рдореВрд▓реА рд╣реЛрдЧрд╛ред рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ (рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп) рдЧрд╛рд░рдВрдЯреА рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рд╕рднреА рдмрд┐рдЯреНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛, рдЬреЛ рдпрд╣рд╛рдВ рдореБрджреНрджрд╛ рд╣реИред

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ "рдЬрдирд░реЗрдЯрд░ рдХреЗ рдХрдВрдзреЗ рдкрд░ рдЦрдбрд╝реЗ" рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЕрдзрд┐рдХ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЬрдирд░реЗрдЯрд░ рдкрд░ рдХрд╛рд░реНрдп рдорд┐рд╢реНрд░рдг рдХрд░рдиреЗ рд╕реЗ рдЖрддреНрдо-рд╕рд╣рд╕рдВрдмрдВрдз рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред

@imneme рдореИрдВ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдПрдХ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рд╣реИ DXSM рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдкреБрд░рд╛рдиреЗ рдореЗрдЧрд╛-рдЗрд╢реНрдпреВ рдореЗрдВ рдЗрд╕ рдШреЛрд╖рдгрд╛ рдЯрд┐рдкреНрдкрдгреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рд┐рдВрдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдпрд╣ рдЙрд╕ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдХреНрдпрд╛ рд╣реИ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрдирд╛ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░реАрдХреНрд╖рдг рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕рд╣рд┐рдд рдЬреЛ рдЖрдкрдиреЗ рдпрд╣рд╛рдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рдореЗрдЧрд╛-рдЗрд╢реНрдпреВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдЪрд░реНрдЪрд╛ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдЬреЛ рдЙрд╕ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред

@vigna

128-рдмрд┐рдЯ рд╕реНрдЯреЗрдЯ рдФрд░ рдПрдХ рдЕрдЪреНрдЫреЗ рдЧреБрдгрдХ (рдХрдо рд╕реЗ рдХрдо 65 рдмрд┐рдЯреНрд╕) рдХреЗ рд╕рд╛рде рдПрдХ LCG рдХреНрдпреЛрдВ рди рд▓реЗрдВ рдФрд░ рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рд╕реЗ рдорд┐рдХреНрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдКрдкрд░реА рдмрд┐рдЯреНрд╕ рдХреЛ рдЦрд░рд╛рдм рдХрд░ рджреЗрдВ, рдЬрд┐рд╕рдХрд╛ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ (рд╣реИрд╢рд┐рдВрдЧ, PRNG, рдЖрджрд┐) рдореЗрдВ рднрд╛рд░реА рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрддреНрдХреГрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рджреЗ рд░рд╣реЗ рд╣реИрдВ?

рдореИрдВ рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБ рдЕрдЧрд░ рдпрд╣ рднрджреНрджрд╛ рд▓рдЧрддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛), рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд╣реИ: рдореИрдВ рдЖрдкрдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдпрд╛ arXiv рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдФрд░ рдкреНрд░реИрдХреНрдЯреНрд░реИрдВрдб рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реВрдВред рд╣рдо рдпрд╣рд╛рдВ (рдпрдереЛрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реВрдЪрд┐рдд) рдЪрд┐рдХрд┐рддреНрд╕рдХ рд╣реИрдВ, PRNG рд╢реЛрдзрдХрд░реНрддрд╛ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЗрд╕ рд╕реБрдЭрд╛рд╡ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реБрд╕рдЬреНрдЬрд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдореИрдВ рдЗрд╕рдХрд╛ рдЕрд░реНрде рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдирд┐рдЬреА рд╕рдордп рдкрд░ рдЕрдиреНрдп рдмрд╛рдзрд╛рдУрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рд╕реБрдЭрд╛рд╡ рдХреЛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рддрдХ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд░реНрдЪ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рдЭреБрдХрд╛рд╡ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рд╕реБрдЭрд╛рд╡ рдХреЛ рд╕реБрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдмреЛрдзрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЙрд╕ рдХрд╛рдо рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PRNG рд╢реЛрдзрдХрд░реНрддрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рдФрд░ рдХреЛ рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

NumPy рдореЗрдВ рд░реИрдВрдбрдо Generator -> BitGenerator -> SeedSequence рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд▓рдЧреЗрдмрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЪрд░реНрдЪрд╛ рдореЗрдВ рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рдмрд┐рдЯрдЧреЗрдВрд╕рд░ рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ NumPy рдореЗрдВ рдЗрд╕рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЧреБрдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдмрд╛рд░ рдЬрдм рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрди рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдирд┐рд░реНрдгрдп, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ, рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдЧрд╛

  • рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рдХреА рдХрдореА (рдФрд░ рдЕрдиреНрдп рдорд╛рдирджрдВрдб? рдореИрдВ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реВрдВ)
  • рдкреНрд░рджрд░реНрд╢рди
  • рд╣рдо рдЬрд┐рд╕ рдорд╛рдирдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рд╕реНрдЯреНрд░реАрдо рдХреЗ рдЯрдХрд░рд╛рд╡ рдХреА рд╕рдВрднрд╛рд╡рдирд╛: BitGenerator.spawn рдФрд░ SeedSequence ред

рдирд┐рдЬреА рддреМрд░ рдкрд░, рдЗрд╕ рдЪрд░реНрдЪрд╛ рдиреЗ рдореБрдЭреЗ рдЦреЛ рджрд┐рдпрд╛ рдЬрдм рдпрд╣ BitGenerators рдХреЗ рдЧреБрдгреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрддрд╛ рдерд╛ рдЬреЛ spawn рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рдерд╛ред рдПрдХ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдЕрднреНрдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдврд╝рд╛рд╡рд╛ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдХреЗ рдкреАрдЖрд░ рдХреА рдЪрд░реНрдЪрд╛ NumPy рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдЧреАред

рд╢рд╛рдпрдж рдпрд╣рд╛рдБ рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо spawn рдХреЛ рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрдорддрд┐ рджреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ jumped рдпрд╛ advance рдЕрдЪреНрдЫреА рдкреНрд░рдерд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдпрд╛ рдПрдирдИрдкреА рднреА рдЙрддреНрдкрд╛рджрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

@mattip рд▓реЛ -рдмрд┐рдЯреНрд╕ рдЬрдиреНрдорджрд┐рди рдХреА рдЯрдХреНрдХрд░ рдХрд┐ @vigna рдиреЗ рд╣рдорд╛рд░реЗ SeedSequence.spawn() рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдЖрд╢реНрд╡рд╕реНрдд рд░рд╣реЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдЬрд┐рд╕ рднреА рдЪрд░реНрдЪрд╛ рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ рд╣реИ, рд╡рд╣ рд╣рдорд╛рд░реЗ рдПрдкреАрдЖрдИ рдХреЗ рдЙрдЪрд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред

рдХреЗрд╡рд▓ рдХреБрдЫ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬрдирд░реЗрдЯрд░ рдХреЗ @rkern рдХреЗ рдкрд╕рдВрджреАрджрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ #ifdef рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рд╕рд╛рде pcg64.c рдореЗрдВ рд▓рдЧрднрдЧ 8 рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред Pyx / pxd рдЕрдиреНрдпрдерд╛ PCG64 рд╡рд░реНрдЧ рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧрд╛ рдЬреЛ рдХреЗрд╡рд▓ рд╕рд╣реА рдкрд░рд┐рднрд╛рд╖рд┐рдд (PCG_DXSM = 1) рдФрд░ рдПрдХ рдЕрджреНрдпрддрди рдбреЙрдХрд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдореИрдВ рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реВрдБ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП резреи those-рдмрд┐рдЯ рдЧрдгрд┐рдд рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

https://github.com/rkern/numpy/compare/v1.17.4...rkern%3Awip/pcg64-dxsm

рдпрд╣ рдЙрд╕рд╕реЗ рднреА рдЖрд╕рд╛рди рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ "рд╕рд╕реНрддреЗ" 64 рдмрд┐рдЯ рдЧреБрдгрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдмрд╕ рдПрдХ рдирдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рдорд┐рдХреНрд╕рд░ (рдЬреЛ рдХрд┐ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИ) рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЬрдирд░реЗрдЯрд░ рдХреА рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдХреЗ рдЖрд╕рдкрд╛рд╕ ifdef рдЬреЛ LCG рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдорд┐рдХреНрд╕рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

https://github.com/bashtage/randomgen/commit/63e50a63f386b5fd725025f2199898944ffccddd -879bd64ee1e2b88fec97b53bc1577f177115

рдЕрдЧрд░ рдЖрдк рдЪрд╛рд╣рддреЗ рддреЛ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдореБрд░рдо рд╣рд╢ 3 рдореЗрдВ рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рдереЗ, рдХреНрдпрд╛ рдХреЛрдИ рдРрд╕рд╛ рдерд╛ред

рдХреНрдпрд╛ if рдмрдпрд╛рди рд╕рдВрдХрд▓рд┐рдд рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ? рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╣реЙрдЯ рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рдЧреБрдгрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдлрд┐рд░ рд╕реЗ, рдпрд╣ randomgen рдФрд░ numpy рдмреАрдЪ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рдЕрдВрддрд░ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдпрд╣ рдорд╛рдирдХреАрдХреГрдд рдкрд░рд┐рд╡рд╛рд░реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП randomgen рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди numpy , рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ BitGenerator рд╕рдХреНрд░рд┐рдп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗ BitGenerator ред рдЕрдЧрд░ рд╣рдореЗрдВ рдХрд┐рд╕реА рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рдкрд░рдлреЙрд░реНрдореЗрдВрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдореЗрдВрдЯреЗрдиреЗрдВрд╕ рдпрд╛ рд░рд┐рдлрд▓реЗрдХреНрдЯрд░ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рд┐рд░реНрдл рдЙрд╕ рдкреНрд░рдпрд╛рд╕ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреА рдмрдЬрд╛рдП рдЦрд░рд╛рдм рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред

рдпрд╣рд╛рдВ рд░реЙрдмрд░реНрдЯ рд╕реЗ рд╕рд╣рдордд рд╣реИрдВред рдореЗрд░реЗ рдкрд╛рд╕ 1.19.0 рд░рд┐рд▓реАрдЬ рдореЗрдВ рдПрдХ рдирдпрд╛ рдмрд┐рдЯ рдЬрдирд░реЗрдЯрд░ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдпреЛрдЧреНрдпрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ред

@bashtage рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ pcg_cm_random_r() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдкреВрд░реНрд╡ рдЖрд╡рд░реНрддреА рд░рд╛рдЬреНрдп рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХреЗ рдмрдЬрд╛рдп рдмрд╛рдж рдЖрд╡рд░реНрддреА рд░рд╛рдЬреНрдп , рддреЛ рдпрд╣ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА codepath рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИ #ifdef рдпрд╛ if рд╕реНрд╡рд┐рдЪред

рдХреНрдпрд╛ if рдмрдпрд╛рди рд╕рдВрдХрд▓рд┐рдд рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ? рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╣реЙрдЯ рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рдЧреБрдгрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдирд╣реАрдВ, NumPy рдореЗрдВ if else рдХреБрдЫ рдмрдирдирд╛ рдЪрд╛рд╣рд┐рдП

#if defined(PCG_DXSM)
    pcg_output_dxsm(state.high, state.low)
#else 
   <old way>
#endif

рдЗрдиреНрд╣реЗрдВ uint128 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрд▓рдЧ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЙрдЪреНрдЪ рдФрд░ рдирд┐рдореНрди uint128 рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓ рдмреИрдХ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВред

@bashtage рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ pcg_cm_random_r() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдкреВрд░реНрд╡ рдЖрд╡рд░реНрддреА рд░рд╛рдЬреНрдп рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХреЗ рдмрдЬрд╛рдп рдмрд╛рдж рдЖрд╡рд░реНрддреА рд░рд╛рдЬреНрдп , рддреЛ рдпрд╣ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА codepath рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИ #ifdef рдпрд╛ if рд╕реНрд╡рд┐рдЪред

рд╣рдореНрдо, рдореИрдВрдиреЗ @imneme рд╕рдВрджрд░реНрдн рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЦрд┐рд▓рд╛рдл рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ 2 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмреАрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ 1000 рдореВрд▓реНрдпреЛрдВ рдкрд░ 100% рдореИрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛:

https://github.com/bashtage/randomgen/blob/master/randomgen/src/pcg64/pcg_dxsm-test-data-gen.cpp

AFAICT (рдФрд░ рдореИрдВ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)

https://github.com/imneme/pcg-cpp/blob/master/include/pcg_random.hpp#L174

рддрдерд╛

https://github.com/imneme/pcg-cpp/blob/master/include/pcg_random.hpp#L1045

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ uint_128 рдкрде рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рд╕реНрддреЗ рдЧреБрдгрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рдХрд╣рдирд╛ рдЪрд╛рд╣ рд░рд╣реЗ рд╣реИрдВред

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд┐рд╣рд┐рдд PCG64 DXSM рдХреНрдпрд╛ рд╣реИред рдпрд╛ рддреЛ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ 64-рдмрд┐рдЯ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдерд╛рди рдкрд░ 64 рдмрд┐рдЯ рдЧреБрдгрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рднреА рддреЗрдЬрд╝ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдкреЛрд╕реНрдЯ рдХреЗ рдмрдЬрд╛рдп рдкреВрд░реНрд╡ рдореЗрдВ рд▓реМрдЯрддрд╛ рд╣реИред setseq_dxsm_128_64 рдореМрдЬреВрджрд╛ PCG64 рдХреЗ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред

рдУрд╣ рдореИрдВ рд╕рдордЭрд╛ред рдирд╣реАрдВ, рдЖрдкрдиреЗ рд╕реА рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рд╕реА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╕реА ++ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред рдореИрдВ cm_setseq_dxsm_128_64 рдХреЗ рдмрд░рд╛рдмрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рд╣реВрдВ рдЬреЛ LCG рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ "рд╕рд╕реНрддреЗ рдЧреБрдгрдХ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ setseq_dxsm_128_64 рдЬреЛ рдЕрднреА рднреА LCG рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рдмрдбрд╝реЗ рдЧреБрдгрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред "рд╕рд╕реНрддреЗ рдЧреБрдгрдХ" рдХреЛ рдбреАрдПрдХреНрд╕рдПрд╕рдПрдо рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдСрд░реНрдереЛрдЧреЛрдирд▓ рдбрд┐рдЬрд╝рд╛рдЗрди рдЕрдХреНрд╖ рд╣реИред

Setseq_dxsm_128_64 рдХреНрдпреЛрдВ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ?

@imneme рдиреЗ рдХрд╣рд╛ рдХрд┐ рд╡рд╣ рдЕрдВрддрддрдГ pcg64 C ++ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ cm_setseq_dxsm_128_64 рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реА setseq_dxsm_128_64 ред рд╕рд╕реНрддреЗ рдЧреБрдгрдХ XSL-RR рдХреА рддреБрд▓рдирд╛ рдореЗрдВ DXSM рдХреА рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЧрдд рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡реИрд░рд┐рдПрдВрдЯ рд╣реИ рдХрд┐ рдЙрд╕рдиреЗ рдХреБрдЫ рдорд╣реАрдиреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред

рдкреВрд░реНрд╡-рдкреБрдирд░рд╛рд╡реГрддреНрдд рд░рд╛рдЬреНрдп рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдирд╛ рднреА рдкреНрд░рджрд░реНрд╢рди рдЯрдХреНрдХрд░ рдХрд╛

рдпрд╣рд╛рдБ рдХреБрдЫ рд╕рдордп рд╣реИрдВ:

In [4]: %timeit p.random_raw(1000000)
3.24 ms ┬▒ 4.61 ┬╡s per loop (mean ┬▒ std. dev. of 7 runs, 100 loops each)

In [5]: p = rg.PCG64(mode="sequence",use_dxsm=False)

In [6]: %timeit p.random_raw(1000000)
3.04 ms ┬▒ 8.47 ┬╡s per loop (mean ┬▒ std. dev. of 7 runs, 100 loops each)

In [7]: import numpy as np

In [8]: p = np.random.PCG64()

In [9]: %timeit p.random_raw(1000000)
3.03 ms ┬▒ 2.54 ┬╡s per loop (mean ┬▒ std. dev. of 7 runs, 100 loops each)

рд╕рднреА Ubuntu-20.04 рдкрд░, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрдХрд▓рдХред

6% рдзреАрдорд╛ред рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреЗ рдЕрдВрддрд░ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред NumPy / randomgen рдореЗрдВ рд╕рднреА рдЯрд╛рдЗрдорд┐рдВрдЧ рджреЗрд╢реА рдХреЛрдб рдХреЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрдВрдЧ рд▓реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рджреВрд░ рд╣реИрдВред

рддреБрд▓рдирд╛

In [10]: x = rg.Xoroshiro128(mode="sequence")

In [11]: %timeit x.random_raw(1000000)
2.59 ms ┬▒ 35.7 ┬╡s per loop (mean ┬▒ std. dev. of 7 runs, 100 loops each)

рдХреНрдпрд╛ рд╕реА рдХреЛрдб (150% рдзреАрдореА ??) рд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рджреА, numpy рд╕рдВрджрд░реНрдн рдореЗрдВ, рдпрд╣ рдЬреНрдпрд╛рджрд╛ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ред рдпрд╣ C ++ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрдзрд┐рдХ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ, рдЬрд┐рд╕рдиреЗ рдХреНрд▓рд╕реНрдЯрд░-рдорд╣реАрдиреЛрдВ рдХреЗ рдЖрд╡рдВрдЯрди рдХреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ C ++ рдХреЛрдб рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ pcg64 рд░реВрдк рдореЗрдВ рдирд╛рдорд╛рдВрдХрди рдХрд┐рдпрд╛ред рд╡реЗ numpy , IMO рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорд╛рдирд┐рдд рдкреНрд░реЗрд░рдгрд╛рдПрдБ рд╣реИрдВред

рд╕реНрдЯреЙрдХ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ PCG64 рдФрд░ рдореЗрд░реЗ PCG64DXSM рдореЗрд░реА рд╢рд╛рдЦрд╛ рдкрд░ ("рд╕рд╕реНрддреЗ рдЧреБрдгрдХ", рдбреАрдПрдХреНрд╕рдПрд╕рдПрдо рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди, рдкреВрд░реНрд╡-рдкреБрдирд░рд╛рд╡реГрддреНрдд рд░рд╛рдЬреНрдп рдХрд╛ рдЙрддреНрдкрд╛рджрди, рдЕрд▓рдЧ рдХреЛрдбрдкреИрде):

[practrand]
|1> s = np.random.SeedSequence()

[practrand]
|2> pcg64 = np.random.PCG64(s)

[practrand]
|3> pcg64dxsm = np.random.PCG64DXSM(s)

[practrand]
|4> %timeit pcg64.random_raw(1000000)
100 loops, best of 3: 3.46 ms per loop

[practrand]
|5> %timeit pcg64dxsm.random_raw(1000000)
100 loops, best of 3: 2.9 ms per loop

рдореИрдВ рдЕрднреА рднреА рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рджреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рдХреЗрд╡рд▓ рдХреБрдЫ (рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ) #ifdefs , рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ MSVC рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рднреАред рд╕рд╛рде рд╣реА RSN MS рдпреВрдЬрд░реНрд╕ # 13816 N рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рдкрд╛рдПрдВрдЧреЗред

рдХреНрдпрд╛ рд╣рдо рдХреЛрдб рдХреЗ рджреЛрд╣рд░рд╛рд╡ рдкрд░ рдмрд╣рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдореИрдВ рдЕрдм рддрдХ #ifdefs рд╕рд╛рде obfuscated рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рд╣реИ

рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рд┐рд░реНрдл рдПрдХ рдордЬрд╛рдХ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдиреЗ "рдкреАрд╕реАрдЬреА 2.0" рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рдмрдпрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ (рдЕрдзрд┐рдорд╛рдирддрдГ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдЬреЛ рдХрд┐ рдиреНрдпреВрдкреЗ рдХреЗ рдЧрд┐рдЯрд╣рдм рдореБрджреНрджреЗ рдирд╣реАрдВ рд╣реИрдВ)ред

рдзрдиреНрдпрд╡рд╛рдж, @rkern рдПрдЯ рдЕрд▓ред

@imneme рдореИрдВ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдПрдХ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рд╣реИ DXSM рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдкреБрд░рд╛рдиреЗ рдореЗрдЧрд╛-рдЗрд╢реНрдпреВ рдореЗрдВ рдЗрд╕ рдШреЛрд╖рдгрд╛ рдЯрд┐рдкреНрдкрдгреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рд┐рдВрдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдпрд╣ рдЙрд╕ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдХреНрдпрд╛ рд╣реИ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрдирд╛ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░реАрдХреНрд╖рдг рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕рд╣рд┐рдд рдЬреЛ рдЖрдкрдиреЗ рдпрд╣рд╛рдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рдореЗрдЧрд╛-рдЗрд╢реНрдпреВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдЪрд░реНрдЪрд╛ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдЬреЛ рдЙрд╕ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред

рдХреНрдпрд╛ рдЖрдкрдХреЗ рдорди рдореЗрдВ рдЯрд╛рдЗрдо-рдлреНрд░реЗрдо рд╣реИ? рдореИрдВ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд░реНрде рд░рдЦрддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдордп рд╕реАрдорд╛ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧреА рдкреНрд░реЗрд░рдХ рд╣реЛрдЧреАред рдПрдХ рд╕рдкреНрддрд╛рд╣ рд╢рд╛рдпрдж? рджреЛ?

@rkern рдиреЗ @vigna рдХреЗ рд╣рд╡рд╛рд▓реЗ рд╕реЗ рднреА рд▓рд┐рдЦрд╛, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд▓рд┐рдЦрд╛:

128-рдмрд┐рдЯ рд╕реНрдЯреЗрдЯ рдФрд░ рдПрдХ рдЕрдЪреНрдЫреЗ рдЧреБрдгрдХ (рдХрдо рд╕реЗ рдХрдо 65 рдмрд┐рдЯреНрд╕) рдХреЗ рд╕рд╛рде рдПрдХ LCG рдХреНрдпреЛрдВ рди рд▓реЗрдВ рдФрд░ рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рд╕реЗ рдорд┐рдХреНрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдКрдкрд░реА рдмрд┐рдЯреНрд╕ рдХреЛ рдЦрд░рд╛рдм рдХрд░ рджреЗрдВ, рдЬрд┐рд╕рдХрд╛ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ (рд╣реИрд╢рд┐рдВрдЧ, PRNG, рдЖрджрд┐) рдореЗрдВ рднрд╛рд░реА рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрддреНрдХреГрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдо рджреЗ рд░рд╣реЗ рд╣реИрдВ?

рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рдореВрд▓ рдкреАрд╕реАрдЬреА рдкреЗрдкрд░ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ, рдЬрд┐рд╕рдореЗрдВ рдСрдл-рдж-рд╢реЗрд▓реНрдл рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ _FastHash_ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЬреЛ рдХрд┐ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдорд▓реНрдЯреА-рдЯреЙрд░реНрд╢рд┐рдлреНрдЯ рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рд╣реИред рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, рдпрд╣ рдЕрдиреНрдп рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдЬрд┐рддрдирд╛ рддреЗрдЬрд╝ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдерд╛ред рд╕реЗрдмреЗрд╕реНрдЯрд┐рдпрд╛рдиреЛ рдиреЗ рдкреАрд╕реАрдЬреА рдХреЗ рдЕрдкрдиреЗ 2018 рд╕рдорд╛рд▓реЛрдЪрдирд╛ рдореЗрдВ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЙрд╕ рдЖрд▓реЛрдЪрдХ рдХреЗ рдкреНрд░рддрд┐ рдореЗрд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЗрд╕ рдЦрдВрдб рдореЗрдВ рдЗрд╕рдХреА рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реВрдВред

рдЕрдкрдиреЗ PCG рд╕рдорд╛рд▓реЛрдЪрдирд╛ рдХреЗ рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рд╡рд╣ рдЕрдкрдирд╛ PCG рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдЦрдХрд░ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВ рдиреАрдЪреЗ рдЙрджреНрдзреГрдд рдХрд░реВрдВрдЧрд╛:

        #include <stdint.h>

        __uint128_t x;

        uint64_t inline next(void) {
            // Put in z the top bits of state
            uint64_t z = x >> 64;
            // Update state
            x = x * ((__uint128_t)0x2360ed051fc65da4 << 64 ^ 0x4385df649fccf645)
                  + ((__uint128_t)0x5851f42d4c957f2d << 64 ^ 0x14057b7ef767814f);
            // Compute mix
            z = (z ^ (z >> 30)) * 0xbf58476d1ce4e5b9;
            z = (z ^ (z >> 27)) * 0x94d049bb133111eb;
            return z ^ (z >> 31);
        }

рдЬрдм рд╕реЗ рдЙрд╕рдиреЗ рдЕрдкрдиреЗ рд╕рдорд╛рд▓реЛрдЪрдХ рдХреЗ рдХреЛрдб рдХреЛ рдФрд░ рднреА рддреЗрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕рд╕реНрддрд╛ рдЧреБрдгрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ 64 рдмрд┐рдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдбрд┐рдЯрд┐рд╡ рдирд┐рд░рдВрддрд░ рдиреАрдЪреЗ рдХрд╛рдЯрддрд╛ рд╣реИ,

        #include <stdint.h>

        __uint128_t x;

        uint64_t inline next(void) {
            // Put in z the top bits of state
            uint64_t z = x >> 64;
            // Update state (multiplier from https://arxiv.org/abs/2001.05304)
            x = x * ((__uint128_t)1 << 64 ^ 0xd605bbb58c8abbfd) + 0x14057b7ef767814f;
            // Compute mix
            z = (z ^ (z >> 30)) * 0xbf58476d1ce4e5b9;
            z = (z ^ (z >> 27)) * 0x94d049bb133111eb;
            return z ^ (z >> 31);
        }

рдЗрди рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдЙрд▓рдЯрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЫрдВрдЯрдиреА рдХреА рдЧрдИ рдЕрд╡рд╕реНрдерд╛ (рдКрдкрд░реА рдЖрдзрд╛) рдХреЛ рдЕрдиреБрдорддрд┐ / рдЦрдВрдбрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдЖрдк рдЗрд╕реЗ рдкреАрдЫреЗ рдХреА рдУрд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдХреНрд░реИрдЪрд┐рдВрдЧ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рд╕рднреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЦрд╛рдорд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдорд╛рддреНрд░ рдПрд▓рд╕реАрдЬреА рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрд░реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдкреВрд░реЗ рд░рд╛рдЬреНрдп рдХреЛ рдкрд░рдорд┐рдЯ / рд╕реНрдХреИрдореНрдмрд▓ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЙрд╕реА рдХрд╛ рдПрдХ рдЯреНрд░рдВрдХреЗрд╢рди рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдирд╛ рд╣реИред (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХрдо рдмрд┐рдЯреНрд╕ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ / рд░реЛрдХрдирд╛ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рддрд░реАрдХрд╛ рд╣реИ - рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд╡реНрдпрд╛рдкрд╛рд░ рдмрдВрдж рд╣реИрдВред рдЙрдЪрд┐рдд рд▓реЛрдЧ рдПрдХ рдЕрд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред)

рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдЕрдкрдиреЗ рдкреАрд╕реАрдЬреА рд╡реЗрд░рд┐рдПрдВрдЯ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рдХрд╛рдо рдиреЗ рдбреАрдПрдХреНрд╕рдПрд╕рдПрдо рдХреА рдЕрдиреБрдорддрд┐ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдкреНрд░реЗрд░рдгрд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрдм рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рдерд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ред

@charris PCG64DXSM 1.19.0 рдореЗрдВ PCG64DXSM рд▓рд╛рдЧреВ рдХрд░рдиреЗ (рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд╣реАрдВ) рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреА рднреВрдЦ рдХреНрдпрд╛ рд╣реИ? рдЙрд╕ рд╕рдордп рдХреНрдпрд╛ рд╣реИ? рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 1.19.0rc2 рдЬрд╛рд░реА рд╣реИ, рдЬреЛ рдХрд┐ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _great_ рдирд╣реАрдВ рд╣реИред рдлрд┐рд░, рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд▓реЗрдХрд░ рдмрд╛рд▓-рдмрд╛рд▓ рдирд╣реАрдВ рд╣реВрдБред рдореИрдВ 1.19.0 рдХреЛ default_rng() рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдорд╛рд░реА рдиреАрддрд┐ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдФрд░ 1.20.0 рдореЗрдВ рдирдП рд╕рд╛рдорд╛рди рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдУрд░ рдЭреБрдХрд╛ рд╣реВрдБред

@rkern рдЕрдВрддрд┐рдо

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдирдП рдХреЛрдб рдХреЗ рд╕рд╛рде рдХреЛрдИ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреИрд╕реЗ рд╣реИрдВред рдореИрдВ PCG64 рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЪрд┐рдВрддрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рднреА рд╣рдорд╛рд░реА рдЕрдиреБрд╢рдВрд╕рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

@imneme рдПрдХ рд╕рдкреНрддрд╛рд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рджреЛ рд╕рдкреНрддрд╛рд╣ рдареАрдХ рд░рд╣реЗрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж!

рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИ рдЬреЛ рдореИрдВ рдЦреБрдж рд╕реЗ рдкреВрдЫ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдХреБрдЫ рд╣рдж рддрдХ рд╡рд┐рд╖рдп рд╣реИред рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдмрд┐рдЯ рдЬрдирд░реЗрдЯрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрд┐рдЯреНрд╕ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди AFAICT, рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдкреВрд░реНрдгрд╛рдВрдХ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред рдореМрдЬреВрджрд╛ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд┐рдЯреНрд╕ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рдХрд░рддреЗ рд╣реИрдВ? рдпрджрд┐ рдХреЛрдИ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЕрдзрд┐рдХ рдкрд░рд┐рдЪрд┐рдд рд╡реНрдпрдХреНрддрд┐ рдЙрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рд╕рдмрд╕реЗ рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред

рдХреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдмрд┐рдЯреНрд╕ рдХреА рдзрд╛рд░рд╛ рд╣реИред рд╣рдо рдкрд░реАрдХреНрд╖рдг рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЛ PRNG рдХрд╛ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╢рдмреНрдж рдЖрдХрд╛рд░ рдмрддрд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЖрдЙрдЯрдкреБрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рддрд╣ рдХреЛ рд╕рдмрд╕реЗ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рддреНрд░реБрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдХрдо рдпрд╛ рдЙрдЪреНрдЪ рдмрд┐рдЯреНрд╕ рдореЗрдВ рдлрд╕рд▓ рдХрд░рддреЗ рд╣реИрдВред рдЦрд░рд╛рдм PRNGs рдореЗрдВ рд╢рдмреНрджред рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╣рдо рд╕рднреА рдЗрди рджрд┐рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ рдкреНрд░реИрдХреНрдЯреНрд░реЗрдб, рдФрд░ рдЗрд╕рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдпрд╣рд╛рдВ рд╣рд▓реНрдХреЗ рдврдВрдЧ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдкреЗрдкрд░ рд╢рд╛рдпрдж рдЯреЗрд╕реНрдЯрдпреВ 01 , рдкрд┐рдЫрд▓реЗ рдЧреЛрд▓реНрдб рд╕реНрдЯреИрдВрдбрд░реНрдб рдЯреЗрд╕реНрдЯ рд╕реВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИред рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЧрд╛рдЗрдб рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рд╣реИред

рдореИрдВ рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБ рдЕрдЧрд░ рдпрд╣ рднрджреНрджрд╛ рд▓рдЧрддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛), рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд╣реИ: рдореИрдВ рдЖрдкрдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдпрд╛ arXiv рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдФрд░ рдкреНрд░реИрдХреНрдЯреНрд░реИрдВрдб рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реВрдВред рд╣рдо рдпрд╣рд╛рдВ (рдпрдереЛрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реВрдЪрд┐рдд) рдЪрд┐рдХрд┐рддреНрд╕рдХ рд╣реИрдВ, PRNG рд╢реЛрдзрдХрд░реНрддрд╛ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЗрд╕ рд╕реБрдЭрд╛рд╡ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реБрд╕рдЬреНрдЬрд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдореИрдВ рдЗрд╕рдХрд╛ рдЕрд░реНрде рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдирд┐рдЬреА рд╕рдордп рдкрд░ рдЕрдиреНрдп рдмрд╛рдзрд╛рдУрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рд╕реБрдЭрд╛рд╡ рдХреЛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рддрдХ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд░реНрдЪ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рдЭреБрдХрд╛рд╡ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рд╕реБрдЭрд╛рд╡ рдХреЛ рд╕реБрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдмреЛрдзрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЙрд╕ рдХрд╛рдо рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PRNG рд╢реЛрдзрдХрд░реНрддрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рдФрд░ рдХреЛ рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдореИрдВ рдЖрдкрдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реВрдВред рдХреЛрдб рдФрд░ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдкреЗрдЬ рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВ LCG128Mix рдирд╛рдо рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдкреАрд╕реАрдЬреА (http://prng.di.unimi.it/pcg.php) рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдореЗрд░реЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ 2.16ns рд▓реЗрддрд╛ рд╣реИ, рдПрдХ Intel (R) Core (TM) i7-7700 CPU @ 3.60GHz, gcc 9.2.1 рдФрд░ -fno-Move-loop-invariants -fno-unroll-loops рдХреЗ рд╕рд╛рдеред

рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рдпрд╣ рдПрдХ рдорд╛рдирдХ рдПрд▓рд╕реАрдЬреА рдХреЛ рдПрдХ рдорд╛рдирдХ рдорд┐рд╢реНрд░рдг рдлрд╝рдВрдХреНрд╢рди (рд╕реНрдЯреИрдлрд╝рд░реНрдб рдХреЗ рд╕реБрдзрд╛рд░рд┐рдд рдореБрд░рдореБрд░рд╢ 3 рдХреЗ рдлрд╛рдЗрдирд▓) рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреНрд░рдорд╛рджреЗрд╢рд┐рдд рд╕реНрдерд┐рд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛:

    #include <stdint.h>
    __uint128_t x; // state
    __uint64_t c;  // stream constant (odd)

    uint64_t inline next(void) {
        // Put in z the top bits of state
        uint64_t z = x >> 64;
        // Update LCG state
        x = x * ((__uint128_t)1 << 64 ^ 0xd605bbb58c8abbfd) + c;
        // Compute mix
        z = (z ^ (z >> 30)) * 0xbf58476d1ce4e5b9;
        z = (z ^ (z >> 27)) * 0x94d049bb133111eb;
        return z ^ (z >> 31);
    }

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдмрддрд╛рдпрд╛ рдерд╛, 65-рдмрд┐рдЯ рдХрдВрдЯрд┐рдиреНрдпреВрд╢рди рдХрд┐рд╕реА рднреА 64-рдмрд┐рдЯ рдХрдВрдЯрд┐рдиреНрдпреВ рд╕реЗ рдХрдИ рдЧреБрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдЬреЛ рдХрд┐ рдорд▓реНрдЯреАрдкреНрд▓рд╛рдпрд░реЛрдВ рдХреА рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рдорд╛рдкрд╛рдВрдХ рдХреЗ рд╡рд░реНрдЧрдореВрд▓ рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рд░рд╛рдЬрд╕реА рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдкреНрд░реИрдХреНрдЯреНрд░реЗрдб рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдКрдВрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдкрдХреЛ рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕ рдорд┐рдХреНрд╕рд┐рдВрдЧ рдлрдВрдХреНрд╢рди рд╕реЗ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдЬрдирд░реЗрдЯрд░ рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдмрд╣реБрдд рдХрдордЬреЛрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЬрдирд░реЗрдЯрд░ (рдпрд╣ рд╕рд┐рд░реНрдл рдПрдбрд┐рдЯрд┐рд╡ рдерд╛), рдФрд░ рдЫреЛрдЯреЗ рд░рд╛рдЬреНрдп (64 рдмрд┐рдЯреНрд╕) рдХреЗ рд╕рд╛рдеред рддреЛ рдпрд╣ рд╕реНрдкреНрд▓рд┐рдЯрдорд┐рдХреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рд┐рд░реНрдл "рдмреЗрд╣рддрд░" рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдХрд┐ 32TB рдкрд░ рдкреНрд░реИрдХреНрдЯреНрд░реИрдВрдб рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИред

рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЬрдирд░реЗрдЯрд░ рдПрдХ рдПрд▓рд╕реАрдЬреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ 60 рд╕реЗ рд╕рднреА рд╕рд╛рдорд╛рдиреНрдп рдШрдВрдЯрд┐рдпрд╛рдБ рдФрд░ рд╕реАрдЯреА рд╣реИрдВ: рдХреВрджрддрд╛ рд╣реИ, рджреВрд░реА рдЖрджрд┐, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдЧрд╛рд░рдВрдЯреА рднреА рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рд╣рд░ рдмрд┐рдЯ 64 рдмрд┐рдЯ рдХреЗ рдЙрдЪреНрдЪрддрд░ рдмрд┐рдЯреНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд░рд╛рдЬреНрдпред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ рдЕрдиреНрдп рдЬрдирд░реЗрдЯрд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╣реИ, рдпрд╛ рдЕрдиреНрдп рд╕рдВрдХрд▓рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

рд▓реЗрдХрд┐рди, рдХреГрдкрдпрд╛, рдЙрд╕реА рдИрдорд╛рдирджрд╛рд░ рддрд░реАрдХреЗ рд╕реЗ: рдХреЗрд╡рд▓ рдЕрдЧрд░ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рдорд╛рдирдХ рдХреЗ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ" рджрд┐рдЧреНрдЧрдЬреЛрдВ рдХреЗ рдХрдВрдзреЛрдВ рдкрд░ рдЦрдбрд╝реЗ рд╣реЛрдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдореЗрд░реЗ рд╕рдордп рдкрд░ рднреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдбрд╝рдЪрдиреЗрдВ рд╣реИрдВ, рдФрд░ рдореИрдВ рдпреЛрдЧрджрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд╢ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рдРрд╕реЗ рдЬрдирд░реЗрдЯрд░ рдкрд░ рд╕рдордп рдмрд┐рддрд╛рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬрд┐рд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдореМрдХрд╛ рдирд╣реАрдВ рд╣реИред

BTW, рд╢рд╛рдорд┐рд▓ рдорд▓реНрдЯреАрдкреНрд▓рд╛рдпрд░реЛрдВ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рдареЛрд╕ рдЙрдкрд╛рдп рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкреАрд╕реАрдЬреА рдбреАрдПрдХреНрд╕рдПрд╕ рдФрд░ рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрддрдорд╛рди 64-рдмрд┐рдЯ рдорд▓реНрдЯреАрдкреНрд▓рд╛рдпрд░ рдХреЗ f scores рд╕реЗ fтВИ рддрдХ рд╡рд░реНрдгрдХреНрд░рдореАрдп рд╕реНрдХреЛрд░ рдХреА рдЧрдгрдирд╛ рдХреАред

рд╡рд░реНрдгрдХреНрд░рдореАрдп рд╕реНрдХреЛрд░ рдПрдХ рдЧреБрдгрдХ рдХреА рдЕрдЪреНрдЫрд╛рдИ рдХрд╛ рдиреНрдпрд╛рдп рдХрд░рдиреЗ рдХрд╛ рдорд╛рдирдХ рддрд░реАрдХрд╛ рд╣реИред 0 рдЦрд░рд╛рдм рд╣реИ, 1 рдЙрддреНрдХреГрд╖реНрдЯ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдХреЛрд░ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗ, рдЯреНрд░рд┐рдкрд▓реНрд╕, 4-рдЯреНрдпреВрдкрд▓реНрд╕ рдЖрджрд┐ рдХреЛ рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЗрди рд╕рд╛рдд рдирдВрдмрд░реЛрдВ рдХреЛ рдХреНрд▓рд╛рд╕рд┐рдХ рдорд╛рдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдиреНрдпреВрдирддрдо, рдпрд╛ рдПрдХ рднрд╛рд░рд┐рдд рдорд╛рдк (рдкрд╣рд▓рд╛ рд╕реНрдХреЛрд░, рджреВрд╕рд░рд╛ рджреЛ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд, рдЖрджрд┐, рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд), рдкрд╣рд▓реЗ рд╕реНрдХреЛрд░ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдЯреАрдПрдУрд╕реАрдкреА рдореЗрдВ рдиреБрде рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред , рдФрд░ рдпреЗ рд╡рд░реНрддрдорд╛рди рдЧреБрдгрдХ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдФрд░ рднрд╛рд░рд┐рдд рдорд╛рдк рд╣реИрдВ:

0xda942042e4dd58b  0.633  0.778

рдЗрд╕рд╕реЗ рдмреЗрд╣рддрд░ 64-рдмрд┐рдЯ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИрдВ:

0xff37f1f758180525  0.761  0.875

рдпрджрд┐ рдЖрдк 65 рдмрд┐рдЯреНрд╕ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЙрд╕реА рдЧрддрд┐ рд╕реЗ (рдХрдо рд╕реЗ рдХрдо, LCG128Mix рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЧрддрд┐ рд╣реИ) рдЖрдкрдХреЛ рдмреЗрд╣рддрд░ рднрд╛рд░рд┐рдд рдорд╛рдк рдорд┐рд▓рддрд╛ рд╣реИ:

0x1d605bbb58c8abbfd  0.761  0.899

рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ 64-рдмрд┐рдЯ рдорд▓реНрдЯреАрдкреНрд▓рд╛рдпрд░реЛрдВ рдиреЗ рдЕрдкрдиреЗ fтВВ рд╕реНрдХреЛрд░ (.90.93) рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдВрддрд░рд┐рдХ рд╕реАрдорд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдирде рджреНрд╡рд╛рд░рд╛ рдиреЛрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ:

0xda942042e4dd58b5  0.795
0xff37f1f758180525  0.928
0x1d605bbb58c8abbfd  0.992

рддреЛ рдкрд╣рд▓реЗ рдЧреБрдгрдХ рдореЗрдВ рдФрд╕рдд рджрд░реНрдЬреЗ рдХрд╛ ier рдЕрдВрдХ рд╣реЛрддрд╛ рд╣реИред рджреВрд╕рд░рд╛ рдЧреБрдгрдХ 64-рдмрд┐рдЯ рдЧреБрдгрдХ рдХреЗ рд▓рд┐рдП рдЗрд╖реНрдЯрддрдо рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИред 65-рдмрд┐рдЯ рдЧреБрдгрдХ рдореЗрдВ рдпреЗ рд╕реАрдорд╛рдПрдВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдЗрдирдХрд╛ рд╕реНрдХреЛрд░ 1 рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╣реИред

рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ рд╕рднреА рд╕реНрдХреЛрд░ рд╣реИрдВ:

 0xda942042e4dd58b5  0.794572 0.809219 0.911528 0.730396 0.678620 0.632688 0.639625
 0xff37f1f758180525  0.927764 0.913983 0.828210 0.864840 0.775314 0.761406 0.763689 
0x1d605bbb58c8abbfd  0.991889 0.907938 0.830964 0.837980 0.780378 0.797464 0.761493

рдЖрдк рдЗрди рд╕реНрдХреЛрд░ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдХреЛрдб рдЧрд╛рдп рд╕реНрдЯреАрд▓ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЧреБрдгрдХ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдореИрдВрдиреЗ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛: https://github.com/vigna/CPRNG ред рдмреЗрд╣рддрд░ рдЧреБрдгрдХ рд╕рдВрдмрдВрдзрд┐рдд рдкреЗрдкрд░ рд╕реЗ рд▓рд┐рдП рдЧрдП рд╣реИрдВред

рдкреАрд╕реАрдЬреА рд╢рд╛рдпрдж рд╕реБрдиреНрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рд╡рдг рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╕рдордп рдХреА рдХрд╕реМрдЯреА рдкрд░ рдЦрдбрд╝рд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХ рдЖрд╢рд╛рдЬрдирдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рддрд░реАрдХреЗред рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред

рдЖрдзрд╛ рдЕрд░рд╛рдЬрдХ SFC64 рдПрдХ рдЙрдЪрд┐рдд рдмрдбрд╝реЗ minumum рдЕрд╡рдзрд┐ рдХреЗ рд╕рд╛рде рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдзреНрд╡рдирд┐ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╕рдмрд╕реЗ рддреЗрдЬ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред SFC64 рдореЗрдВ рдХреЛрдИ рдЬрдореНрдк рдлрд╝рдВрдХреНрд╢рдВрд╕ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ _woutout рд╕реНрдкреАрдб рдУрд╡рд░рд╣реЗрдб рдХреЛ 2 ^ 63 рдЧреНрд╡рд╛рд░реЗрдЯреЗрдб рдпреВрдирд┐рдХ рд╕реНрдЯреНрд░реАрдо_ рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмрд╕ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдХрд╛рдЙрдВрдЯрд░ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдПрдбрд┐рдЯрд┐рд╡ рдХрдВрдЯреАрдиреНрдпреВрдЕрд╕ рдХреЗ (рд╡реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП) рдХреЗ рд╕рд╛рде рдПрдХ рд╡реАрдЗрд▓ рдЕрдиреБрдХреНрд░рдо рдЬреЛрдбрд╝реЗрдВред рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╖рдо k рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдкреВрд░реНрдг рдЕрд╡рдзрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ Weyl рдирд┐рд░рдВрддрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд 64-рдмрд┐рдЯреНрд╕ рд░рд╛рдЬреНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

typedef struct {uint64_t a, b, c, w, k;} sfcw64_t; // k = stream

static inline uint64_t sfcw64_next(sfcw64_t* s) {
    enum {LROT = 24, RSHIFT = 11, LSHIFT = 3};
    const uint64_t out = s->a + s->b + (s->w += s->k);
    s->a = s->b ^ (s->b >> RSHIFT);
    s->b = s->c + (s->c << LSHIFT);
    s->c = ((s->c << LROT) | (s->c >> (64 - LROT))) + out;
    return out;
}

рдПрдХ 320 рдмрд┐рдЯреНрд╕ рд░рд╛рдЬреНрдп рдХрднреА-рдХрднреА рдЕрд╡рд╛рдВрдЫрдиреАрдп рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ 256 рдмрд┐рдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдЪреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИред рдмрджрд▓реЗ рд╣реБрдП рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рднреА рдзреНрдпрд╛рди рджреЗрдВ, рдЬреЛ рдмрд┐рдЯ рдорд┐рд╢реНрд░рдг рдХреЗ рд▓рд┐рдП рд╡реЗрдЗрд▓ рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдмреЗрд╣рддрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ 128/128 рдмрд┐рдЯреНрд╕ рдЕрд░рд╛рдЬрдХ / рд╕рдВрд░рдЪрд┐рдд рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдВрддреБрд▓рди рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ:
/ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЖрдЙрдЯрдкреБрдЯ func + cleanup рд╕реЗ rotl64 () рд╣рдЯрд╛рдпрд╛, 6 рдЕрдЧрд╕реНрдд:

typedef struct {uint64_t a, b, w, k;} tylo64_t;

static inline uint64_t tylo64_next(tylo64_t* s) {
    enum {LROT = 24, RSHIFT = 11, LSHIFT = 3};
    const uint64_t b = s->b, out = s->a ^ (s->w += s->k);
    s->a = (b + (b << LSHIFT)) ^ (b >> RSHIFT);
    s->b = ((b << LROT) | (b >> (64 - LROT))) + out;
    return out;
}

рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░реИрдХреНрдЯреНрд░реИрдВрдб рдкрд░реАрдХреНрд╖рдг рдореЗрдВ 4 рдЯреАрдмреА рдкрд╛рд╕ рдХрд░ рдЪреБрдХрд╛ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдореБрджреНрджреЗ рдХреЗ рд╡рд┐рдЧреНрдирд╛ рдХреЗ рд╣реЗрдорд┐рдВрдЧ-рд╡реЗрдЯ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЪрд▓рд╛рдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╣реИ рдХрд┐ рдЪреБрднрди рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рд╣реИ рдпрд╛ рдирд╣реАрдВред )ред

рдиреЛрдЯ: рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдмрд┐рдЯреНрд╕ рд╕реЗрдЯ рдХреЗ рд▓рдЧрднрдЧ 50% рдХреЗ рд╕рд╛рде рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп (рдЕрдиреВрдареЗ) рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡реАрдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдлрд╛рдпрджрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЖрдЧреЗ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдпрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

/ рд╕рдВрдкрд╛рджрди: рд╕рдлрд╛рдИред

@ рдЯрд╛рдпрд▓реЛ-рдХрд╛рдо SFC64 рдкрд╣рд▓реЗ рд╕реЗ рд╣реА NumPy рдореЗрдВ рд╣реИ, рдлрд┐рд▓реЙрдХреНрд╕ рдХреЗ рд╕рд╛рде, рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЬрдирд░реЗрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред

рдареАрдХ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреМрди рд╕рд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдЕрдиреБрдХреВрд▓ рд╕рдордЧреНрд░ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ? рдХрд╛рдлреА рд╕рд╛рдл рд╣реИ, рдФрд░ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВ рдЕрдкрдиреЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рд╛рде рдвреЗрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдм рддрдХ рдпрд╣ рдЧрддрд┐, рдЖрдЙрдЯрдкреБрдЯ рдЧреБрдгрд╡рддреНрддрд╛, рд╕рд╛рджрдЧреА / рдЖрдХрд╛рд░ / рдкреЛрд░реНрдЯрдмреЗрд▓рд┐рдЯреА, рдФрд░ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рджреВрд╕рд░реЛрдВ рдиреЗ рднреА рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред

NumPy рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдорд╛рдирдХ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ k=1 ред

https://github.com/numpy/numpy/blob/ad30b31af0bb3fbfdc0f11486807edc76cec2680/numpy/random/src/scc64/sfc64.h#L25 -L33 -L33

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдЦрд░реЛрдВрдЪ рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ PRNG рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди PRNG рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╣реБрдд рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореБрджреНрджрд╛ рд╣реИ рдФрд░ рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрд▓рдмреНрдз, рдмрд╛рд░реАрдХреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡реЗрд░рд┐рдПрдВрдЯ рдХреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░реА рдЪрд┐рдВрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдореМрдЬреВрджрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ PRNG PRNG рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдЬрдВрдкрдмрд┐рд▓рд┐рдЯреА, рдХрд┐ рдпрд╣ рдЬрд┐рд╕ рд╡реЗрд░рд┐рдПрдВрдЯ рдХреА рдЬрдЧрд╣ рд▓реЗрддрд╛ рд╣реИ рд╡рд╣ рдЕрднреА рднреА рдЙрдЬрд╛рдЧрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред SFC64 (рдпрд╛ рддреЛ рд╣рдорд╛рд░рд╛ рдпрд╛ рдЖрдкрдХрд╛) рдХреА рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ @bashtage SFC64 рдХреЗ рдЕрдкрдиреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛред

@ tylo-work рдпрджрд┐ рдЖрдк рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВ, рддреЛ рдЖрдк NumPy рдХреЗ рд╕реАрдбрд╕рдкреЗрдВрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдЦрд░реЛрдВрдЪ рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ PRNG рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди PRNG рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╣реБрдд рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореБрджреНрджрд╛ рд╣реИ рдФрд░ рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрд▓рдмреНрдз, рдмрд╛рд░реАрдХреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡реЗрд░рд┐рдПрдВрдЯ рдХреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред

рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдк рдХреБрдЫ рдкреАрд╕реАрдЬреА-рдбреАрдПрдХреНрд╕рдПрд╕-рдЬреИрд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдЧреЗ рдФрд░ рд╕реБрдзрд╛рд░ рд╣реИрдВ рдЬреЛ рдЖрдк рд╕рд┐рд░реНрдл рдмреЗрд╣рддрд░ рд╕реНрдерд┐рд░рд╛рдВрдХ (рдФрд░ рдмрд╣реБрдд рдорд╛рдореВрд▓реА рдордВрджреА) рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреАрд╕реАрдЬреА-рдбреАрдПрдХреНрд╕рдПрд╕ рдЬрд▓реНрдж рд╣реА рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рдирдореЗрдВ рджреЛ рдЗрдВрдЯрд░рд▓реЗрд╡реНрдб, рд╕рд╣рд╕рдВрдмрджреНрдз рдЕрдиреБрд╡рд░реНрддреА 112 рдмрд┐рдЯреНрд╕ рд░рд╛рдЬреНрдп рдХреЗ рд╕рд╛рде рд╣реЛрдВрдЧреЗ:

rng=PCGDXS_int112, seed=0x4d198651
length= 128 gigabytes (2^37 bytes), time= 5700 seconds
  Test Name                         Raw       Processed     Evaluation
  [Low1/64]TMFn(0+2):wl             R= +57.3  p~=   2e-27     FAIL !!
  [Low8/64]FPF-14+6/64:(1,14-0)     R= +17.5  p =  8.0e-16    FAIL
  [other failures in the same tests]
  ...and 1893 test result(s) without anomalies

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рд╕рд┐рд░реНрдл 565536 рд╕рд╣рд╕рдВрдмрджреНрдз рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдЗрд╕рд╕реЗ рдбрд░рдиреЗ рдХреА рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реИред

рд▓реЗрдХрд┐рди рдЖрдк 0x1d605bb58c8abbfd рдЬреИрд╕реЗ рдмреЗрд╣рддрд░ рдЧреБрдгрдХ, рдФрд░ 0x9e3779b97f4a7c15 рдЬреИрд╕реЗ рдмреЗрд╣рддрд░ рдорд┐рдХреНрд╕рд░ рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рдирдВрдмрд░ 65-рдмрд┐рдЯ рдЧреБрдгрдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╡рд░реНрдгрдХреНрд░рдореАрдп рд╕реНрдХреЛрд░ рд╣реИрдВред рджреВрд╕рд░реА рд╕рдВрдЦреНрдпрд╛ 64-рдмрд┐рдЯ рдлрд╝рд┐рдХреНрд╕рдкреЙрдЗрдВрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рд╕рд┐рд░реНрдл рд╕реБрдирд╣рд░рд╛ рдЕрдиреБрдкрд╛рдд рд╣реИ, рдФрд░ рдпрд╣ рдЕрдЪреНрдЫрд╛ рдорд┐рд╢реНрд░рдг рдЧреБрдг рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЧреБрдгрдХ рд╣реИрд╢рд┐рдВрдЧ рдкрд░ рдирде рдЯреАрдУрд╕реАрдкреА рджреЗрдЦреЗрдВ); рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИрд╢ рдХрд▓реЗрдХреНрд╢рдВрд╕ рдХреЛ рдорд┐рдХреНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд▓рд┐рдкреНрд╕ рдХрд▓реЗрдХреНрд╢рдВрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЖрдк рдбреЗрдЯрд╛ рдХреА рд╕рдорд╛рди рд░рд╛рд╢рд┐ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдлрдкреАрдПрдл рдХреЛ рд╡рд┐рдлрд▓ рдХрд░рддреЗ рд╣реИрдВ:

rng=PCG65-DXS╧Х_int112, seed=0x4d198651
length= 128 gigabytes (2^37 bytes), time= 5014 seconds
  Test Name                         Raw       Processed     Evaluation
  [Low8/64]FPF-14+6/64:(0,14-0)     R= +16.1  p =  1.5e-14    FAIL
  [other failures in the same test]
  ...and 1892 test result(s) without anomalies

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдЧрд░ рд╣рдо 2TB PCG-DXS рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рд╕рдорд╛рди рдЕрдВрддрд░рд╕рдВрдмрджреНрдз, рд╕рд╣рд╕рдВрдмрджреНрдз рдЕрдиреБрд╡рд░реНрддреА рдХреЗ рд▓рд┐рдП _three_ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ:

rng=PCGDXS_int112, seed=0x4d198651
length= 2 terabytes (2^41 bytes), time= 53962 seconds
  Test Name                         Raw       Processed     Evaluation
  [Low1/32]TMFn(0+0):wl             R= +50.2  p~=   4e-23     FAIL !!
  [Low8/64]FPF-14+6/64:(1,14-0)     R=+291.1  p =  4.7e-269   FAIL !!!!!!
  [Low8/64]Gap-16:B                 R= +19.5  p =  1.4e-16    FAIL !
  [other failures in the same tests]
  ...and 2153 test result(s) without anomalies

рдЬрдмрдХрд┐ PCG65-DXS╧Х рдЕрднреА рднреА рд╕рд┐рд░реНрдл FPF рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ:

rng=PCGDXS65╧Х_int112, seed=0x4d198651
length= 2 terabytes (2^41 bytes), time= 55280 seconds
  Test Name                         Raw       Processed     Evaluation
  [Low8/64]FPF-14+6/64:(0,14-0)     R=+232.1  p =  2.0e-214   FAIL !!!!!!
  [other failures in the same test]
  ...and 2153 test result(s) without anomalies

рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, PCG65-DXS fail рдЧреИрдк рдФрд░ TMFn рдХреЛ рднреА рд╡рд┐рдлрд▓ рдХрд░ рджреЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ PCG-DXS рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрд╣ PCG65-DXS which рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдХреЛрдб рд╣реИ, рдЬреЛ рдмреЗрд╣рддрд░ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд╕рд╛рде рд╕рд┐рд░реНрдл PCG-DXS рд╣реИ:

#include <stdint.h>

__uint128_t x; // State
uint64_t c; // Additive constant

static inline uint64_t output(__uint128_t internal) {
    uint64_t hi = internal >> 64;
    uint64_t lo = internal;

    lo |= 1;
    hi ^= hi >> 32;
    hi *= 0x9e3779b97f4a7c15;
    hi ^= hi >> 48;
    hi *= lo;
    return hi;
}

static uint64_t inline next(void) {
    __uint128_t old_x = x;
    x = x *  ((__uint128_t)1 << 64 ^ 0xd605bbb58c8abbfd) + c;
    return output(old_x);
}

рд╕реАрдорд╛рдВрдд рдордВрджреА рдПрдХ рдРрдб рдирд┐рд░реНрджреЗрд╢ (65-рдмрд┐рдЯ рдЧреБрдгрдХ рдХреЗ рдХрд╛рд░рдг) рдХреЗ рдХрд╛рд░рдг рд╣реИ, рдФрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ 64-рдмрд┐рдЯ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИрдВред

рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдкреАрд╕реАрдЬреА 65-рдбреАрдПрдХреНрд╕рдПрд╕ meas рд╕рд╣рд╕рдВрдмрдВрдз рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдореЗрдВ рдкреАрд╕реАрдЬреА-рдбреАрдПрдХреНрд╕рдПрд╕ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред

@ рд╡рд┐рдЧреНрдирд╛ , FYI рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдХреБрдЫ рдЗрдВрдЯрд░рд▓реЗрд╡рд┐рдВрдЧ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рднреА рдХреА, рдФрд░ рджреЗрдЦрд╛ рдХрд┐ 128 рдЗрдВрдЯрд░рд▓реЗрд╡реНрдб рд╕реНрдЯреНрд░реАрдо рдпрд╛ рдЕрдзрд┐рдХ рдмрдирд╛рддреЗ рд╕рдордп xoshiro256 ** рдЬрд▓реНрджреА рд╕реЗ рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛ред 256 рдХреЗ рд╕рд╛рде рдпрд╣ рдЬрд▓реНрджреА рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛ред рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдмрд┐рдВрджреБ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рд╣реИ рдХрд┐ рдЬрдм рдкреНрд░рддреНрдпреЗрдХ рдзрд╛рд░рд╛ рдХреБрдЫ рд░реИрдЦрд┐рдХ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЖрд░рдореНрдн рдХреА рдЧрдИ рдереА, рддреЛ PRNG рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рд░рд╛рдЬреНрдп s[0]=s[1]=s[2]=s[3] = k1 + stream*k2 рд▓рд┐рдП рдЖрд░рдВрднрд┐рдХ рд╣реИред рдлрд┐рд░ 12 рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ sfc64 рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдпрд╣ рдЬреЛрд╢реАрд░реЛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рдЖрд░рдВрднреАрдХрд░рдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ - рдФрд░ рдереЛрдбрд╝реА рдЪрд┐рдВрддрд╛ рдХреА рдмрд╛рдд рд╣реИ - рдХрд┐ рдХреБрдЫ рдЗрдВрдЯрд░рд▓реЗрд╡рд┐рдВрдЧ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдЬреЛрд╢реАрд░реЛ рдХреЗ рд▓рд┐рдП рдареАрдХ рд▓рдЧ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХрдИ рдХреЗ рд╕рд╛рде рдЕрд╕рдлрд▓ рд░рд╣рд╛ред

seed: 1591888413
RNG_test using PractRand version 0.95
RNG = RNG_stdin64, seed = unknown
test set = core, folding = standard (64 bit)
...
rng=RNG_stdin64, seed=unknown
length= 2 gigabytes (2^31 bytes), time= 29.6 seconds
  Test Name                         Raw       Processed     Evaluation
  [Low1/64]FPF-14+6/16:(1,14-1)     R=  +7.2  p =  3.7e-6   unusual
  [Low1/64]FPF-14+6/16:all          R=  +9.6  p =  1.8e-8   very suspicious
  ...and 261 test result(s) without anomalies

rng=RNG_stdin64, seed=unknown
length= 4 gigabytes (2^32 bytes), time= 55.5 seconds
  Test Name                         Raw       Processed     Evaluation
  [Low1/64]FPF-14+6/16:(0,14-0)     R= +13.4  p =  4.7e-12   VERY SUSPICIOUS
  [Low1/64]FPF-14+6/16:(1,14-0)     R=  +9.4  p =  2.6e-8   suspicious
  [Low1/64]FPF-14+6/16:(2,14-1)     R=  +7.7  p =  1.3e-6   unusual
  [Low1/64]FPF-14+6/16:all          R= +17.4  p =  8.8e-16    FAIL !
  ...and 275 test result(s) without anomalies

рдореИрдВрдиреЗ SFC64 рдФрд░ TYLO64 рдХреЗ рд▓рд┐рдП рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рдХрдордЬрд╝реЛрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдХреЗрд╡рд▓ 2 рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рдЕрднреА рднреА рдареАрдХ рд▓рдЧ рд░рд╣реЗ рдереЗред
рдкреНрд░рджрд░реНрд╢рди рдкрд░: xoshiro256 ** рдореЗрд░реА рдорд╢реАрди рдкрд░ рджреЛ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 33% рдзреАрдорд╛ рдЪрд▓рддрд╛ рд╣реИред TYLO64 рдХреЗрд╡рд▓ 196 рдмрд┐рдЯреНрд╕ рд╕реНрдЯреЗрдЯ рд╡реЗрд░рд┐рдПрдВрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ:

int main()
{
    //FILE* f = freopen(NULL, "wb", stdout);  // Only necessary on Windows, but harmless.
    enum {THREADS = 256};
    uint64_t seed = 1591888413; // <- e.g. this fails. // (uint64_t) time(NULL); 
    fprintf(stderr, "seed: %lu\n", seed);

    static tylo64_t tyl[THREADS];
    static sfc64_t sfc[THREADS];
    static uint64_t xo[THREADS][4];

    for (size_t i = 0; i < THREADS; ++i) {
    tyl[i] = tylo64_seed(seed + (12839732 * i), 19287319823 * i);
    sfc[i] = sfc64_seed(seed + (12839732 * i));
    xo[i][0] = xo[i][1] = xo[i][2] = xo[i][3] = seed + (12839732 * i);
    for (int j=0; j<12; ++j) xoshiro256starstar_rand(xo[i]);
    }
    static uint64_t buffer[THREADS];
    size_t n = 1024 * 1024 * 256 / THREADS;

    while (1/*n--*/) {
        for (int i=0; i<THREADS; ++i) {
        //buffer[i] = tylo64_rand(&tyl[i]);
        //buffer[i] = sfc64_rand(&sfc[i]);
            buffer[i] = xoshiro256starstar_rand(xo[i]);
        }
        fwrite((void*) buffer, sizeof(buffer[0]), THREADS, stdout);
    }
    return 0;
}

рдореИрдВ рдХреБрдЫ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЗрдбрд░ рдХреЛрдб рд╢рд╛рдорд┐рд▓ рдХрд░реВрдВрдЧрд╛:

typedef struct {uint64_t a, b, w, k;} tylo64_t; // k = stream

static inline uint64_t tylo64_rand(tylo64_t* s) {
    enum {LROT = 24, RSHIFT = 11, LSHIFT = 3};
    const uint64_t b = s->b, w = s->w, out = (s->a + w) ^ (s->w += s->k);
    s->a = (b + (b << LSHIFT)) ^ (b >> RSHIFT);
    s->b = ((b << LROT) | (b >> (64 - LROT))) + out;
    return out;
}

/* stream in range [0, 2^63) */
static inline tylo64_t tylo64_seed(const uint64_t seed, const uint64_t stream) {
    tylo64_t state = {seed, seed, seed, (stream << 1) | 1};
    for (int i = 0; i < 12; ++i) tylo64_rand(&state);
    return state;
}

static inline uint64_t rotl(const uint64_t x, int k) {
    return (x << k) | (x >> (64 - k));
}
static inline uint64_t xoshiro256starstar_rand(uint64_t* s) {
    const uint64_t result = rotl(s[1] * 5, 7) * 9;
    const uint64_t t = s[1] << 17;
    s[2] ^= s[0];
    s[3] ^= s[1];
    s[1] ^= s[2];
    s[0] ^= s[3];
    s[2] ^= t;
    s[3] = rotl(s[3], 45);
    return result;
}

@ tylo-work рдореИрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЪрд░реНрдЪрд╛ рдХреА рдЙрд╕ рдкрдВрдХреНрддрд┐ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рдЕрдкрдиреЗ рдЧрд┐рддреБрдм рд░реЗрдкреЛ рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ, рдФрд░ рдПрдХ рдФрд░ рдкреЛрд╕реНрдЯ рдпрд╣рд╛рдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВред рдмрд╛рдХреА рд╕рдм, рдХреГрдкрдпрд╛ рд╡рд╣рд╛рдВ рдЬрд╡рд╛рдм рджреЗрдВред рдЖрдкрдХреЗ рд╕рд╣рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

@imneme @rkern рдЯрд╛рдЗрдо 1.19 рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдЪрд▓ рд░рд╣рд╛ рд╣реИред

PCG64DXSM рдХреА рддрд░рд╣

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рдХреБрдЫ рдЕрдиреНрдп рдЕрд╕рдВрдмрдВрдзрд┐рдд рдорд╛рдорд▓реЛрдВ рд╕реЗ рдирд┐рдкрдЯ рд░рд╣рд╛ рд╣реВрдВред рд╣рдорд╛рд░реА рдЪрд░реНрдЪрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдПрдХ рдЫреЛрдЯреА рд╕реА рджреЗрд░реА рдПрдХ рдмрдбрд╝рд╛ рдореБрджреНрджрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ PCG64DXSM рдХреЛ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рдереА, рди рдХрд┐ рдПрдХ рдирдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ (рдЕрднреА рдХреЗ рд▓рд┐рдП, рдХрдо рд╕реЗ рдХрдо)ред

рдЕрдм рдЬрдм 1.20 рд╢реБрд░реВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдпрд╣ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ DXSM рдореЗрдВ рдЬрд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ?

рдмреНрд░рд╛рдВрдЪрд┐рдВрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рдХрджрдо рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдХреБрдЫ рд╕рдордп рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдХреЗ рднреАрддрд░ рдЗрд╕ рдкрд░ рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред @bashtage рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП PCG64DXSM рддреИрдпрд╛рд░ рд╣реИ рдФрд░ рдЗрд╕реЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдЯреНрд░реАрдо рдкрд░ рд╕реНрд╡рд┐рдЪ рдХреЛ рдлреНрд▓рд┐рдк рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрдгрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдпрд╣ рдЬреЛ рджреЗрдЦрддрд╛ рд╣реИ, рдЙрд╕рд╕реЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ 1.20 рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИред

IIRC, рд╣рдо рдПрдХ рдРрд╕реЗ рд╕рдВрджрд░реНрдн рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рд▓реЗ рд▓реЛрдЧ рдЗрд╕ рдмрджрд▓рд╛рд╡ рд╕реЗ рдЦреБрд╢ рд╣реИрдВ рддреЛ рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рд╣рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЕрд▓рдЧ рд╕реНрдерд┐рд░рд╛рдВрдХ рдФрд░ рдПрдХ рдЕрд▓рдЧ рд╕реНрдХреНрд░реИрдЪрд┐рдВрдЧ рдлрдВрдХреНрд╢рди рд╣реИред рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдореВрд▓ PCG64 рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП @rkern рдиреЗ рдЬреЛ рд▓рд┐рдЦрд╛ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдиреНрдпрд╛рд╕ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрдгрдп рдХреБрдЫ рдХреЛрдб (рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП) рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди PCG64DXSM рдерд╛ред

рд╢рд╛рдпрдж rkern рдХреА WIP рд╢рд╛рдЦрд╛ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рд▓рд┐рдЦреВрдВрдЧрд╛ , рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @rkern рдХреЛ рдПрдХ рдФрд░ рднреА рдЕрдзрд┐рдХ рдордЬрдмреВрдд рдЙрддреНрдкрд╛рджрди рдХреНрд░рдорд╛рдВрдХрди рдкрд╕рдВрдж рдЖрдпрд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдпрд╛ рддреЛ рдЖрдкрдХреЛ рдЧрддрд┐ рдХреА рд▓рд╛рдЧрдд

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

astrofrog picture astrofrog  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

keithbriggs picture keithbriggs  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Foadsf picture Foadsf  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kevinzhai80 picture kevinzhai80  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

manuels picture manuels  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ