Skip to content
Snippets Groups Projects
Commit 9537739f authored by Tom Lane's avatar Tom Lane
Browse files

Fix pgbench's getrand() function so that min and max have approximately

the same chance of being selected as do numbers between them.  Problem
noted by Greg Stark; fix by Alexey Klyukin.
parent d9384a4b
Branches
Tags
No related merge requests found
/* /*
* $PostgreSQL: pgsql/contrib/pgbench/pgbench.c,v 1.75 2007/12/11 02:31:49 tgl Exp $ * $PostgreSQL: pgsql/contrib/pgbench/pgbench.c,v 1.76 2008/03/10 01:23:04 tgl Exp $
* *
* pgbench: a simple benchmark program for PostgreSQL * pgbench: a simple benchmark program for PostgreSQL
* written by Tatsuo Ishii * written by Tatsuo Ishii
...@@ -191,11 +191,15 @@ usage(void) ...@@ -191,11 +191,15 @@ usage(void)
fprintf(stderr, "(initialize mode): pgbench -i [-h hostname][-p port][-s scaling_factor] [-F fillfactor] [-U login][-d][dbname]\n"); fprintf(stderr, "(initialize mode): pgbench -i [-h hostname][-p port][-s scaling_factor] [-F fillfactor] [-U login][-d][dbname]\n");
} }
/* random number generator */ /* random number generator: uniform distribution from min to max inclusive */
static int static int
getrand(int min, int max) getrand(int min, int max)
{ {
return min + (int) (((max - min) * (double) random()) / MAX_RANDOM_VALUE + 0.5); /*
* Odd coding is so that min and max have approximately the same chance of
* being selected as do numbers between them.
*/
return min + (int) (((max - min + 1) * (double) random()) / (MAX_RANDOM_VALUE + 1.0));
} }
/* call PQexec() and exit() on failure */ /* call PQexec() and exit() on failure */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment