我需要生成介于0(含)到n(不含)之间的任意大随机整数。我最初的想法是调用nextDoublen并乘以n,但是一旦n变得大于2 53,结果将不再均匀分布。BigInteger 具有以下可用的构造函数:public BigInteger(int numBits, Random rnd)构造一个随机生成的BigInteger,该整数均匀地分布在0到(2 numBits -1)(包括0和2 )之间。如何使用它来获得0-n范围内的随机值,其中n不是2的幂?
3 回答

泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
为什么不构造一个随机的BigInteger,然后从中构造一个BigDecimal呢?BigDecimal中有一个构造函数:public BigDecimal(BigInteger unscaledVal, int scale)
在这里似乎相关,不是吗?给它一个随机的BigInteger和一个随机的缩放int,您将拥有一个随机的BigDecimal。不是吗
添加回答
举报
0/150
提交
取消