是否可以让用户选择随机数的位数,特别是随机大整数?例如,如果用户希望它的长度为 15 位,则随机数生成器将只生成 15 位长的大整数。
最佳答案
您可以使用BigInteger
的构造函数来指定二进制位数:BigInteger(int numBits, Random rnd)
.对于用户想要的每三个十进制数字,您大约需要十个二进制数字。例如,如果您需要一个 30 位的随机 BigInt
,请使用 100 个二进制数字。
可以用remainder(10^30)
把不需要的数字剪掉,循环做,保证首位不为0,保证位数正确,比如这个:
Random rnd = new Random(123);
BigInteger tenPow30 = new BigInteger("10").pow(30);
BigInteger min = new BigInteger("10").pow(29);
BigInteger r;
do {
r = new BigInteger(100, rnd).remainder(tenPow30);
} while (r.compareTo(min) < 0);
System.out.println(r);
链接到 demo .
关于Java 随机数生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12439942/