Recently, I came across a comment claiming that almost all researchers doing Monte Carlo methods are doing it wrong. It went on to elaborate that merely choosing different seeds for different instances of a PRNG such as the Mersenne Twister is not sufficient to ensure unbiased results as bad collisions can occur. The Wikipedia article on the Mersenne Twister seems to corroborate:
Multiple Mersenne Twister instances that differ only in seed value (but not other parameters) are not generally appropriate for Monte-Carlo simulations that require independent random number generators, though there exists a method for choosing multiple sets of parameter values.
I have to admit, I'm guilty as charged. But so are all the other implementations of parallel Monte Carlo libraries I've seen so far, in particular ALPS.
The Wikipedia article also references two papers offering remedy:
- The Dynamic Creation (DC) scheme (1998) picks parameter sets for the MTs based on the hypothesis that they are independent if the corresponding characteristic polynomials are coprime.
- The Jump Ahead for $\mathbb F_2$-linear RNGs (2008). I reckon it is similar to the leap-frog method for LCGs.
Both methods have been coautored by Matsumoto and Nishimura, the original authors of the Mersenne Twister algorithm.
I'm afraid I'm not very knowledgeable in number theory or algebra and do not fully grasp the above schemes or the maths behind the Mersenne Twister. My questions are primarily of practical nature:
- How much do I really need to worry about introducing bias to my simulations when not employing such a scheme if next to nobody cares about it in practice (at least in my community)?
- If I were to implement one of these counter-measures, am I right to assume that the Jump-Ahead one is better suited as it is based on a firm theory and is the more modern method?