Passing a size or anything with suffix "r" is supposed to apply a
random factor form 0 to 1. However due to the replacement of random()
with ha_random64(), all 64 bits are random before the divide, so the
end result is a random 32-bit value. In addition, ha_random64() is
slow since shared between threads.
Let's use statistical_prng() which is designed for this purpose and
is much cheaper. No backport is needed, this is only in 3.4.
} while (*next);
if (use_rand)
- result = ((long long)ha_random64() * result) / ((long long)RAND_MAX + 1);
+ result = ((long long)statistical_prng() * result) / 0xFFFFFFFFU;
switch (*arg) {
case 's':