Replace Mersenne Twister with PCG
<h3><details><summary>Original Reporter info from Mantis: <small>runewalsh</small></summary><small>
- **Reporter name:**
</small></details></h3>
## Description:
This paper: https://arxiv.org/pdf/1910.06437.pdf (see '10. Conclusion') and articles on https://www.pcg-random.org/ promote an idea that Mersenne Twister has severe flaws despite huge (2 KB) state. In particular, huge state size is both a flaw on its own (https://www.pcg-random.org/posts/too-big-to-fail.html) and is one of the reasons for some other flaws like sluggish decorrelation (see chapters of the paper before 'Conclusion').
Meanwhile, PCG-64-32-XSH-RR with period 2^64:<br/>
— has outstanding statistical performance. With stronger tempering function, RXS-M-XS (randomized xorshift + multiply + xorshift), it passes all modern statistical tests with only 36 bits of state, which is a theoretical minimum, see https://www.pcg-random.org/paper.html. Weaker but faster tempering intended for everyday use, XSH-RR (xorshift + randomized rotate), still passes same tests with 39 bits of state and has plenty of safety margin with conventional 64 bits.<br/>
— is very easy to code<br/>
— is very fast. At least it is definitely faster than non-SIMD Mersenne Twister.<br/>
— has minimal memory footprint (one to two uints64, one is a state and another is a stream-selecting constant if multiple streams are desired).
Changing the RNG would break current RandSeed sequences, but..?
## Mantis conversion info:
- **Mantis ID:** 38237
- **Monitored by:** » @CuriousKit (J. Gareth Moreton)
issue