首页 > Java > java教程 > 如何在 Java 中生成自定义范围内的随机 BigInteger 值?

如何在 Java 中生成自定义范围内的随机 BigInteger 值?

Linda Hamilton
发布: 2024-10-25 07:43:29
原创
391 人浏览过

How to Generate Random BigInteger Values Within a Custom Range in Java?

如何在 Java 中生成自定义范围内的随机 BigInteger 值

生成指定范围内的随机 BigInteger 值,特别是当上限limit (n) 不是 2 的幂,可以使用构造函数 BigInteger(int numBits, Random rnd)。

要实现这一点,需要一个循环:

<code class="java">BigInteger randomNumber;
do {
    randomNumber = new BigInteger(upperLimit.bitLength(), randomSource);
} while (randomNumber.compareTo(upperLimit) >= 0);</code>
登录后复制

这个方法提供指定范围内的均匀分布,通常需要少于两次迭代。

为了提高效率,可以限制迭代次数:

<code class="java">int nlen = upperLimit.bitLength();
BigInteger nm1 = upperLimit.subtract(BigInteger.ONE);
BigInteger randomNumber, temp;
do {
    temp = new BigInteger(nlen + 100, randomSource);
    randomNumber = temp.mod(upperLimit);
} while (s.subtract(randomNumber).add(nm1).bitLength() >= nlen + 100);</code>
登录后复制

虽然此版本确保在几乎在所有情况下,它都会引入计算成本更高的 mod() 操作。因此,两种方法之间的选择取决于所使用的特定 RNG 实例。

以上是如何在 Java 中生成自定义范围内的随机 BigInteger 值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板