在指定范围内生成随机独特的大整数?

4
我刚开始使用BigInteger,所以我正在尽力阅读它的文档。然而,我仍然感到困惑。我需要在2^70和2^80之间生成500个随机整数,但我不知道如何为BigIntegers设置范围。
我收到了可能是重复的消息,所以我猜我应该补充说明一下:我已经查看了这个解决方案,但仍然不明白如何解决我的问题:如何在Java中生成随机的BigInteger值?

可能是如何在Java中生成随机BigInteger值?的重复问题。我认为那个问题应该能回答你的问题。 - DonyorM
可能是重复问题:https://dev59.com/z3E95IYBdhLWcg3wft5w - thetraveller
1个回答

1

有一种内置方法可以生成0到2^n-1之间的随机BigInteger。您可以在循环中使用它来生成高达2^80的数字。

一个数字落在2^70以下的概率非常小(~0.1%)。如果发生这种情况(并且用500次迭代很可能会发生),只需再次生成即可。

这将为您提供在2^70和2^80之间均匀分布的随机数。

一个数字重复的几乎不存在。如果您认为这是不可忽略的,请检查以前的数字是否有重复,并重新生成。


可以设置最小范围值吗?对于我的任务来说,它需要在特定的范围内设置。 - Jasmine
1
最小范围是多少?如果是2^70,上述方法将非常有效。如果是2^78,则最好使用不同的方法,例如https://dev59.com/6H7aa4cB1Zd3GeqPtbDM#23054579。 - Thilo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接