[random] uniform_int isn't uniform

Class uniform_int from <boost/random/uniform_int.hpp> is supposed to provide a uniform random integer distribution on a range [min, max]. (See [1].) It doesn't do that. I've attached a demonstration program, random.cc. The program asks uniform_int for integers in the range [0, 780903144], then sorts those integers into 20 equal buckets. If the random integers were uniformly distributed, the buckets would all get about the same number of elements. Instead, the last 5 buckets only get 2/3 as many numbers. To put it another way, in this specific case, uniform_int significantly under-represents the top 1/4 of its range. I've attached a patch to uniform_int.hpp that fixes the problem. References: [1] http://boost.org/libs/random/random-distributions.html#uniform_int
participants (1)
-
David Benbennick