[IPython-dev] random.seed() Was: [FWD] An interesting take on the Notebook Problem
Hans Meine
hans_meine at gmx.net
Thu Sep 29 10:57:20 EDT 2005
On Monday 01 August 2005 18:21, Hans Meine wrote:
> > random.seed() deterministically sets the whole state from an
> > integer/long. Calling random.seed() should be enough.
>
> That's what I thought, too. However, I tried that with a unit-testing
> program which draws a lot more than 20 numbers, and there was a difference
> (fatal for me). That is the whole reason for my posting, because what you
> wrote was exactly my understanding of a "seed".
I finally found out what caused my problems. This is how my program started:
import random, time
if len(sys.argv) > 1:
seed = long(sys.argv[1])
else:
seed = time.time()
print "using %d as seed." % (seed, )
random.seed(seed)
This is for stochastic unit-testing, but when it fails, I wanted to be able to
reproduce that, see the cmdline parameter. Now please tell me if you see the
problem?
*** solution follows ***
I found it: time.time() gives a float, but the %d output silently truncates
it. Seeding with the float does something different (IIRC, the docs say that
any hashable object can be used for seed()ing, but seed(hash(seed)) is *not*
what happens).
Sorry for the noise, but you know this satisfied feeling when you finally
found an explanation.. ;-)
Have a nice day,
Hans
PS: My next posting will be on-topic again, promised! :-)
More information about the IPython-dev
mailing list