On Thu, 5 Jan 2006 01:14:43 +0000 (UTC) in comp.lang.python, Karlo
Lozovina <[EMAIL PROTECTED]> wrote:

>Dave Hansen <[EMAIL PROTECTED]> wrote in 
>news:[EMAIL PROTECTED]:
>
>> I'm not sure what rn is, but it looks like a standard library
>> random.Random object.  If so, I don't think you want to seed your PRNG
>> each time you use it -- your numbers might be much less random that
>> way.  If it is the standard library object, the PRNG is seeded when
>> the module is first imported, so you may not need to seed it at all.
>
>Yes, it is random module. So, what is the preferred way of seeding random 
>number generator? Just once in a file? Or something else?
>
>I just needed some "random" choices to be made, so I didn't dig much into 
>random module. Anyway, thanks for pointing this out, appreciated.

>From my reading of the library docs, when you import random the PRNG
is seeded (using the current time) for you automatically.  

If you call seed without a parameter, it will again use the current
time to seed the generator.  But the generator only needs one seed to
generate a random sequence.  Re-seeding the generator starts it
proding a new, different sequence. The resulting sequence of numbers
is really the first number in several distinct sequences.

It may be that the sequence of first numbers is "random enough" for
your use.  But the call to seed is useless at best, and damaging at
worst.

Unless you want to reproduce the same string of random numbers,
there's really no reason to seed the generator yourself.  Consider:

>>> rep = random.Random()
>>> rep.seed(1234)
>>> first = [rep.random() for x in range(10)]
>>> second = [rep.random() for x in range(10)]
>>> rep.seed(1234)
>>> third = [rep.random() for x in range(10)]
>>> print first == second
False
>>> print first == third
True
>>> fourth = [rep.random() for x in range(10)]
>>> print second == fourth
True
>>>  

In your code, I would simply remove the rn.seed() call.  Regards,
                                        -=Dave

-- 
Change is inevitable, progress is not.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to