Re: Random not so random

stimits@comcast.net

From: "D. Stimits" <stimits@comcast.net>
To:
Cc: pgsql-general@postgresql.org
Date: 2004-10-05T16:21:43Z
Lists: pgsql-general
Vivek Khera wrote:
>>>>>>"DS" == D Stimits <stimits@comcast.net> writes:
> 
> 
> DS> If it uses the same seed from the connection, then all randoms within
> DS> a connect that has not reconnected will use the same seed. Which means
> DS> the same sequence will be generated each time, which is why it is
> DS> pseudo-random and not random. For it to be random not just the first
> DS> call of a new connection, but among all calls of new connection, it
> DS> would have to seed it based on time at the moment of query and not at
> DS> the moment of connect. A pseudo-random generator using the same seed
> DS> will generate the same sequence.
> 
> You clearly demonstrate you do not understand the purpose of a seed in
> a PRNG, nor how PRNG's in general work.  You want to seed it once and
> only once per process, not every time you issue a query.  And nobody
> said to use the same seed every time, either.
> 

Sorry, at the time I don't believe PRNG was part of the conversation, 
that came after (maybe I missed that). What I saw were functions based 
on one-way hashes...is that incorrect? For one-way hashes and 
pseudo-random generators using some form of hash a different seed should 
be used or else the pattern will be the same when using the same data. 
 From the man page on srandom():

        The srandom() function sets its argument as the seed for a new 
sequence  of  pseudo-random
        integers  to be returned by random().  These sequences are 
repeatable by calling srandom()
        with the same seed value.  If no seed value is provided, the 
random() function is automat-
        ically seeded with a value of 1.

The srandom() caught my eye in the earlier email, not PRNG. You are 
welcome to re-use srandom() without a new seed if you want.

D. Stimits, stimits AT comcast DOT net