我正在尝试找到一种方法来生成一个非常大的随机数。我在网上查找但找不到我要找的东西。我需要生成一个介于 1111111111111111111111 和 9999999999999999999999 之间的随机数;该号码的长度为 22 位。 如果您知道该怎么做,请告诉我。 谢谢
最佳答案
这是满足您需求的经过测试的快速解决方案:
public void generateNumber(){
BigInteger min = new BigInteger("1111111111111111111111");
BigInteger max = new BigInteger("9999999999999999999999");
System.out.println(random(min, max));
}
protected static Random RANDOM = new Random();
public static BigInteger random(BigInteger min, BigInteger max) {
if(max.compareTo(min) < 0) {
BigInteger tmp = min;
min = max;
max = tmp;
} else if (max.compareTo(min) == 0) {
return min;
}
max = max.add(BigInteger.ONE);
BigInteger range = max.subtract(min);
int length = range.bitLength();
BigInteger result = new BigInteger(length, RANDOM);
while(result.compareTo(range) >= 0) {
result = new BigInteger(length, RANDOM);
}
result = result.add(min);
return result;
}
关于java - 在Java中生成一个长随机整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41527413/