win32 random number generator

"Merlin Moncure" <[email protected]> Mon, 22 Aug 2005 15:59:57 -0400
Newsgroups gmane.comp.db.postgresql.devel.win32
Message-ID <[email protected]>
The windows random number of generator (a port of lrand48 in random.c)
seems a little weak.  It seems to only offer about 16 bits of precision.
Maybe there is a bug in the implementation?

Merlin

observe:
esp=3D# select count(*)  from (select distinct random() from
generate_series(1,1000000)) q;
 count
-------
 65559
(1 row)

esp=3D# select count(*)  from (select distinct random() from
generate_series(1,1000000)) q;
 count
-------
 65558
(1 row)

esp=3D# select count(*)  from (select distinct random() from
generate_series(1,1000000)) q;
 count
-------
 65572
(1 row)

esp=3D# select min(r), max(r), avg(r) from (select random() as r from
generate_series(1,1000000)) q;
         min          |        max        |        avg
----------------------+-------------------+-------------------
 4.6566128752458e-010 | 0.999984742142253 | 0.499985154491819
(1 row)

esp=3D# select min(r), max(r), avg(r) from (select random() as r from
generate_series(1,1000000)) q;
         min          |        max        |       avg
----------------------+-------------------+------------------
 4.6566128752458e-010 | 0.999984742142253 | 0.50079921773987
(1 row)

esp=3D#
esp=3D# select min(r), max(r), avg(r) from (select random() as r from
generate_series(1,1000000)) q;
         min          |        max        |        avg
----------------------+-------------------+-------------------
 4.6566128752458e-010 | 0.999984742142253 | 0.499613384426336
(1 row)

---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend