3 ms·
While the PCG paper does not contain such an impressive number of mathematical formula's that makes me instantly want to skip pages, I would not say it has 'pra
by pitdicker 9y ago
While the PCG paper does not contain such an impressive number of mathematical formula's that makes me instantly want to skip pages, I would not say it has 'practically no theory in its support'.
For the theory around periods, distribution and jumping it can just refer to these properties for LCG's, which are very well studied.
Testing an RNG design against the statistical test suites TestU01 and PractRand seems on first intuition the be the wrong way to go about it. First you should have a theory behind the RNG, and only then test it.
And to me it seems PCG does just that. The various output functions are carefully designed. Which bits are the best and which are the weakest for an LCG? The worst bits are dismissed. How can the best bits be used to pick permutations of the remaining bits? The output functions are well designed, but you will have to watch the video or look at the C++ source to see the theory behind them.
Then just about all known tests and theory to differentiate between true randomness and the results of an RNG are applied. Which are handily packed into test suites. That is the way to look at these tests. Not some sort of specific, arbitrarily chosen test. This is not the situation of Javascript engines that may get optimized to much for some arbitrary benchmark.
And those test where run against severely weakened versions of PCG, just to be sure the tests don't accidentally pass.
But you have a good point: designing solely against test suites is not a good idea. A result are Xorshift128+ and Xoroshiro128+. Even with some theory behind it, they are the result of varying constants until they do not fail any test on BigCrush too consistently. It may even sometimes pass, and that is what is claimed on for example Wikipedia. But along comes another test suite, PractRand, and it fails within a second of testing. It is optimized for BigCrush, but not really statistically good.