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. PRNGs which are similar to the listed ones but worse in one way and equivalent in all others are omitted too. Cryptographic PRNGs are omitted because they are slow.
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,