栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Java中生成随机的BigInteger值?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Java中生成随机的BigInteger值?

使用循环:

BigInteger randomNumber;do {    randomNumber = new BigInteger(upperLimit.bitLength(), randomSource);} while (randomNumber.compareTo(upperLimit) >= 0);

平均而言,这将需要少于两次的迭代,并且选择将是统一的。

编辑:如果您的RNG昂贵,则可以通过以下方式限制迭代次数:

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);// result is in 'randomNumber'

使用此版本,极不可能发生循环不止一次(在2 ^ 100中小于一次机会,即,比主机在下一秒内自发着火的可能性小)。另一方面,该mod()操作的计算量很大,因此该版本可能比以前的版本慢,除非

randomSource
实例异常慢。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/515959.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号