Re: Random not so random

stimits@comcast.net

From: "D. Stimits" <stimits@comcast.net>
To:
Cc: pgsql-general@postgresql.org
Date: 2004-10-04T14:22:37Z
Lists: pgsql-general
Tom Lane wrote:
> "Arnau Rebassa" <arebassa@hotmail.com> writes:
> 
>>  I'm using a debian linux as OS with a 2.4 kernel running on it.
> 
> 
>>>Incidentally, are you reconnecting every time or is it that multiple calls 
>>>in a single session are returning the same record?
> 
> 
>>  I'm reconnecting each time I want to retrieve a message.
> 
> 
> Hmm.  postmaster.c does this during startup of each backend process:
> 
> 	gettimeofday(&now, &tz);
> 	srandom((unsigned int) now.tv_usec);

If it uses the same seed from the connection, then all randoms within a 
connect that has not reconnected will use the same seed. Which means the 
same sequence will be generated each time, which is why it is 
pseudo-random and not random. For it to be random not just the first 
call of a new connection, but among all calls of new connection, it 
would have to seed it based on time at the moment of query and not at 
the moment of connect. A pseudo-random generator using the same seed 
will generate the same sequence.

D. Stimits, stimits AT comcast DOT net