Romu – Fine random number generators
I&#x27;d stay away from this work. There are ample math and reasoning errors in the paper, and the claims are dubious.<p>One prime example: the algo for ROMU is of the form new_state64 = ROTATE_LEFT(old_state64,32) * constant, which decomposes the space {1,2,..,2^64-1} into a permutation. From a given start seed, your cycle may be short, and you won&#x27;t know this until it bites you.<p>The author incorrectly addresses this using the theory of <i>random</i> permutations, but his is most definitely NOT a random permutation chosen uniformly from S_n.  His analysis most does not follow. The proofs he cites are not applicable to his since he has a fixed permutation.<p>Among all cycles, among <i>all</i> permutations, the results hold. They do not hold for a fixed permutation. For example his results fail for the n-cycle and they fail for the identity permutation. They similarly fail for many, many other permutations, and he has no proof that his is not a badly chosen one. Based on the structure of it (rotate and mult), I suspect from past experience that his permutation has lots of structure that leads to all sorts of pathologies for this use.This is a basic math error, and the paper is full of such basic errors.<p>For why to listen (somewhat) to me, check out my name - I&#x27;ve done a bit of writing (and a lot of teaching) on PRNGs for decades. I&#x27;ve followed the field for quite some time, and am well aware of much of the research in it.<p>There is no need with all the good choices out there to choose a PRNG that cannot provide a solid proof of cycle length (or at least correct bounds) for any seed value. This one fails this basic test.<p>If I get time (and remember) later, I&#x27;ve written some SAT solver code to explicitly find holes in PRNGs, and I&#x27;ll try to dig it out and analyze the cycles in this fixed permutation. If anyone else wants to try it the idea is you can assign variables to bit positions in the state, represent the permutation as boolean expressions in these bits, and find cycles using SAT solvers without having to run through steps incrementally. I suspect in this case it will break this PRNG pretty quickly.