Java 随机数生成器

标签 java random biginteger

是否可以让用户选择随机数的位数,特别是随机大整数?例如,如果用户希望它的长度为 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/

相关文章:

c++ - 如何高效生成Zipf分布数?

c++ - Bigint *运算符

jenkins - 无法在 Jenkins 中启动新的奴隶

java - 迭代更改 Kafka Stream SessionWindows 的持续时间

java - 生成 10 个随机整数,将它们存储在一个数组中,然后调用一个方法来显示该数组

c++ - 关于C++中的随机数

java - 最佳 Java 图形用户界面维度

java - Selenium - 如何选择具有可变文本的元素

java - 找到第 n 个斐波那契数,其中 n 可以变化到 10^9