Lair Of The Multimedia Guru

2024-01-16

simple and good PRNGs

As ive looked at many PRNGs in the last few days, heres a quick list/note about which seem good.
To be on this list they must be

  • Fast
  • Fail 0 general statistical tests
  • 64bit output
  • minimum period of at least ~264

I tried a bit to create a list of diverse types of generators. If i hear about any of these generators failing some tests, i will remove them (unless i forget), i also may add more in case i see others in the future. The list is in alphabetical order. None of the generators is secure, and i expect that the state can be found from the output with little effort for every fast PRNG. Some of these generators allow efficient seeking. For others I do not know how to efficiently seek.
Also see https://pracrand.sourceforge.net/RNG_engines.txt, https://prng.di.unimi.it/,

Name state period seekable Class
MWC256 256bit ~2255 yes multiplicative congruential generator with prime modulus
SFC64 256bit ≥264 ? chaotic RNG + counter
splitmix64 64bit 264 yes counter + mixer
xoroshiro128** 128bit 2128-1 yes LFSR + mixer
XSM64 256bit 2128 yes LCG + mixer

This omits basic LCGs, LFGs, LFSRs as well as simple variants of these because they fail tests. (The mersene twister is a purely linear generator and fails related tests).
JSF64 is omitted because its minimal cycle length is unknown, and thats like using code that very likely will work instead of knowing it will work for no compelling advantage.
PCG is omitted because all variants i saw either fail some test or are slower than the generators listed above. Also PCG has issues with sequence correlation because LCGs have that issue. The generator most similar to PCG in the table above is XSM64
Cryptographic PRNGs are omitted because they are slow.
xoroshiro /xoshiro plus are omitted as they fail tests. I picked one from what remained.

SFC64 and XSM64 are testet here The others in the table ive tested with practrand to 32TB:
mwc256_test,
splitmix64_test,
xoroshiro128starstar_test
also several of them have been tested here,

Filed under: Pseudo random number generators — Michael @ 22:09

No Comments »

No comments yet.

RSS feed for comments on this post.

Leave a comment

Powered by WordPress