the same chance of being selected as do numbers between them. Problem
noted by Greg Stark; fix by Alexey Klyukin.
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
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 */