如何生成大于2 ** 64的随机BigInteger

问题描述 投票:1回答:1

我需要有随机的大整数来检查数字是否为质数(有一种方法可以做到这一点,但是该数字必须从2 64开始。堆栈溢出中有一个答案,如何将BigIntegers从x随机分配到y,但是我不知道如何在此方法中放入2 64。有什么办法吗?

BigInteger randomNumber;
do {
    randomNumber = new BigInteger(upperLimit.bitLength(), randomSource);
} while (randomNumber.compareTo(upperLimit) >= 0);

我希望输出从18446744073709551616到任何更大的可用。

java biginteger
1个回答
0
投票

首先将数字随机化,然后随机生成每个数字并将它们附加在一起

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());
}
© www.soinside.com 2019 - 2024. All rights reserved.