我需要生成0(包括)到n(不包括)范围内的任意大的随机整数.我最初的想法是调用nextDouble并乘以n,但是一旦n大于2 53,结果将不再均匀分布.
BigInteger 有以下构造函数可用:
public BigInteger(int numBits, Random rnd)
Run Code Online (Sandbox Code Playgroud)
构造一个随机生成的BigInteger,均匀分布在0到(2 numBits - 1)的范围内,包括0和(2 numBits - 1).
如何使用它来获得0到n范围内的随机值,其中n不是2的幂?