random changes

Raymond Hettinger vze4rx4y at verizon.net
Fri Aug 8 12:13:38 EDT 2003


"dan" <danbmil99 at yahoo.com> wrote in message
news:fbf8d8f2.0308071030.1f174d34 at posting.google.com...
> just a suggestion --
>
> next time the core RNG is changed, I think it would be useful to have
> an
> -oldrandom switch.  It is common practice in simulation projects to
> depend
> on the fact that your random numbers will come out the same if you use
> the same seed.  In bumping to 2.3 with the new Mersenne algorithm, I
> have no easy way of duplicating my old results.


It would have been helpful to included a sample call, the results, and
the version of Python you were using.  It looks like you were using
Py2.0 and upgraded to Py2.3.  This difference you are seeing came
version Py2.1 when WichmannHill's seed method was improved
(the upgrade to the Mersenne Twister has nothing to do with it):

"""
  random.py's seed() function is new.  For bit-for-bit compatibility with
  prior releases, use the whseed function instead.  The new seed function
  addresses two problems:  (1) The old function couldn't produce more than
  about 2**24 distinct internal states; the new one about 2**45 (the best
  that can be done in the Wichmann-Hill generator).  (2) The old function
  sometimes produced identical internal states when passed distinct
  integers, and there was no simple way to predict when that would happen;
  the new one guarantees to produce distinct internal states for all
  arguments in [0, 27814431486576L).
"""

So, to get your old results with Py2.3, try something like:

import random
rng = random.WichmannHill()
rng.whseed(12345)
for i in range(6):
    print rng.randint(1, 10)


Raymond Hettinger








More information about the Python-list mailing list