[Python-Dev] Time for a change of random number generator? (original) (raw)

Chris Angelico rosuav at gmail.com
Thu Feb 11 23:45:36 EST 2016


On Fri, Feb 12, 2016 at 3:12 PM, Andrew Barnert via Python-Dev <python-dev at python.org> wrote:

On Thursday, February 11, 2016 7:20 PM, Stephen J. Turnbull <stephen at xemacs.org> wrote:

I think we should keep it around forever. Even my slowest colleagues are learning that they should record their seeds and PRNG algorithms for reproducibility's sake. :-) +1 For that matter, restore Wichmann-Hill. So you can write code that works on 2.3 and 3.6, but not 3.5? I agree that it shouldn't have gone away, but I think it may be too late for adding it back to help too much.

You're probably right, but the point isn't to make the same code run, necessarily. It's to make things verifiable. Suppose I do some scientific research that involves a pseudo-random number component, and I publish my results ("Monte Carlo analysis produced these results, blah blah, using this seed, etc, etc"). If you want to come back later and say "I think there was a bug in your code", you need to be able to generate the exact same PRNG sequence. I published my algorithm and my seed, so you should in theory be able to recreate that sequence; but if you have to reimplement the same algorithm, that's a lot of unnecessary work that could have been replaced with "from random.deprecated_generators import WichmannHill as Random". (Plus there's the whole question of "was your reimplemented PRNG buggy" - or, for that matter, "was the original PRNG buggy". Using the exact same code eliminates even that.)

So I'm +1 on keeping Mersenne Twister even after it's been replaced as the default PRNG, -0 on reinstating something that hasn't been used in well over a decade, and -1 on replacing MT today - I'm not seeing strong arguments in favour of changing.

ChrisA



More information about the Python-Dev mailing list