使用 BigInteger 时如何选择范围内的随机数

How to choose a random number in the range when working with BigInteger

BigInteger bigInteger = new BigInteger("534534");

2到bigInteger-2之间的范围;

您可以像这样 [1]:

在封闭范围 [x1,x2] 中生成随机双精度数
double f = Math.random()/Math.nextDown(1.0);
double x = x1*(1.0 - f) + x2*f;

使用范围在 2 和 bigInteger-2 之间的 BigDecimals;:

double f = Math.random()/Math.nextDown(1.0);
BigDecimal.valueOf(2).multiply(BigDecimal.valueOf(1.0 - f)).add(new BigDecimal(bigInteger.subtract(BigInteger.valueOf(2))).multiply(BigDecimal.valueOf(f))).toBigInteger()