我在 JAVA 中使用 BigInteger 类,我想从1 to x-1
. 我不知道该怎么做?
我不能使用nextInt()
,因为它只接受int
不接受BigIntegers
,我将生成 32 位及以上的数字,所以,甚至nextInt()
不会工作。
我知道如果我搜索我可能会找到一些有用的解决方案,但我的时间太短了。(截止日期前2小时)
提前致谢。
我在 JAVA 中使用 BigInteger 类,我想从1 to x-1
. 我不知道该怎么做?
我不能使用nextInt()
,因为它只接受int
不接受BigIntegers
,我将生成 32 位及以上的数字,所以,甚至nextInt()
不会工作。
我知道如果我搜索我可能会找到一些有用的解决方案,但我的时间太短了。(截止日期前2小时)
提前致谢。
愿这项工作
public static void main(String[] args) {
BigInteger bigInteger = new BigInteger("9349988899999");
BigInteger bigInteger1 = bigInteger.subtract(new BigInteger("1"));
System.out.println(randomBigInteger(bigInteger1));
}
public static BigInteger randomBigInteger(BigInteger n) {
Random rnd = new Random();
int maxNumBitLength = n.bitLength();
BigInteger aRandomBigInt;
do {
aRandomBigInt = new BigInteger(maxNumBitLength, rnd);
// compare random number lessthan ginven number
} while (aRandomBigInt.compareTo(n) > 0);
return aRandomBigInt;
}
只需使用get的构造函数Random
Random rnd = new Random();
BigInteger i = new BigInteger(maxNumOfBits, rnd);
如果您想要介于 0 和某个数字之间,您可以生成与该数字相同的位数并生成随机数,直到您得到比它少的一位。
(代码未测试)
public static BigInteger randomBigInteger(BigInteger maxNum) {
Random rnd = new Random();
int maxNumBitLength = maxNum.bitLength();
BigInteger rndNum;
do {
rndNum = new BigInteger(maxNumBitLength, nd);
} while(result.compareTo(upperLimit) >= 0);
return result;
}