我需要有随机的大整数来检查数字是否为质数(有一种方法可以做到这一点,但是该数字必须从2 64开始。堆栈溢出中有一个答案,如何将BigIntegers从x随机分配到y,但是我不知道如何在此方法中放入2 64。有什么办法吗?
BigInteger randomNumber;
do {
randomNumber = new BigInteger(upperLimit.bitLength(), randomSource);
} while (randomNumber.compareTo(upperLimit) >= 0);
我希望输出从18446744073709551616到任何更大的可用。
首先将数字随机化,然后随机生成每个数字并将它们附加在一起
public static BigInteger randomBigInteger () {
Random r = ...;
var digits = r.randomInt(65 - 2) + 2;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < digits.length; i++) {
sb.append(r.randomInt(10));
}
return new BigInteger(sb.toString());
}