我在JAVA中使用BigInteger类,我想从1 to x-1
生成随机数。我不知道该怎么做?
我无法使用nextInt()
,因为它只接受int
而不是BigIntegers
,我将生成32位及以上的数字,因此即使nextInt()
也无效。< / p>
我知道如果我搜索我可能会找到一些有用的解决方案,但我的时间太短了。 (截止日期前2小时)
先谢谢。
答案 0 :(得分:1)
愿这项工作
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;
}
答案 1 :(得分:0)
只需使用获得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;
}