On Thu, Nov 15, 2018 at 4:38 PM Tom Lane <[email protected]> wrote: > Thomas Munro <[email protected]> writes: > > Increase the number of possible random seeds per time period. > > Um, this bit is *not* right: > > + ((unsigned int) MyStartTimestamp >> 20)); > > You're cutting it down to 32 bits and then right shifting, which > means you are shifting in a lot of zeroes when you could be shifting > in something that's not quite as predetermined. I had in mind to do > the shifts in uint64 arithmetic and then narrow the final XOR result > to int (maybe let the compiler do that implicitly).
Will this close the case? - srandom(((unsigned int) MyProcPid) ^ - ((unsigned int) MyStartTimestamp << 12) ^ - ((unsigned int) MyStartTimestamp >> 20)); + srandom(((uint64) MyProcPid) ^ + ((uint64) MyStartTimestamp << 12) ^ + ((uint64) MyStartTimestamp >> 20)); -- Thomas Munro http://www.enterprisedb.com
