Returns a random value that is less than the given upper bound.
Uses Lemire's "nearly divisionless" method for generating random integers in an interval. For a detailed explanation, see: https://arxiv.org/abs/1805.10941
The random number generator to use
The upper bound for the randomly generated value. Must be non-zero.
A random value in the range [0, upperBound). Every value in the range is equally likely.
Returns a random value that is less than the given upper bound.
Uses Lemire's "nearly divisionless" method for generating random integers in an interval. For a detailed explanation, see: https://arxiv.org/abs/1805.10941