Re: Re: [HACKERS] random() function produces wrong range
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: roberts@panix.com
Cc: Thomas Swan <tswan@olemiss.edu>,
Malcolm Beattie <mbeattie@sable.ox.ac.uk>, Thomas Lockhart <lockhart@alumni.caltech.edu>, pgsql-hackers@postgresql.org, pgsql-general@postgresql.org
Date: 2000-08-03T15:45:39Z
Lists: pgsql-hackers
Roland Roberts <roberts@panix.com> writes: > Call random() several times and test the maximum value against your > thresholds of 2^15 and 2^31. If random() is generating values in the > range 1:2^31-1, you would expect half of your values to be greater > than 2^15-1; more importantly, if you generate, say, 10 values, you > expect only a 1:1024 chance that they are all below 2^15. Actually the odds are far better than that. If the range is 2^31-1 then only about 2^-16th of the outputs should be less than 2^15. So ten probes gives you a failure probability of about 2^-160 not 2^-10. Generalizing, you could tell the difference between widths of 31, 47, or 63 bits with the same level of reliability. regards, tom lane