gpt4 book ai didi

java - 传递给 Java 随机数生成器的种子值如何影响其输出?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:16:31 24 4
gpt4 key购买 nike

传递给 Java 随机数生成器的种子值如何影响其输出?如果我知道种子值,我将如何确定它将输出哪些数字?

还有一些种子值比其他种子值更能产生比其他种子值更多的伪随机性吗?

最佳答案

您无法在软件中生成真正的随机数,因为软件是确定性的:给定一些输入,原则上它总是会生成可预测的输出。

因此,为了获得随机数,已经发明了许多算法来生成看起来随机的数字序列(但实际上并非如此 - 这就是它们被称为伪随机数的原因)。

这样的算法从一些起始值、种子开始,然后用它进行一些计算以生成下一个伪随机数。

如果算法很好,那么种子值应该没有差异:一个种子值在生成随机数时不应优于其他任何种子值。

通常,将当前时间作为种子值,这样每次生成一个数字序列时,都会得到一个不同的序列。请注意,如果使用相同的种子值,则每次运行时都会得到相同的伪随机数序列。

如果您将伪随机数用于加密目的,您应该非常小心,因为如果攻击者知道种子值,那么他可以重新生成可能危及系统安全的随机数序列。对于真正安全的系统,人们使用特殊的基于硬件的随机数生成器,它可以生成真正的随机数。 Java 有一个类 java.security.SecureRandom 来与此类系统交互。

参见 Random number generation在维基百科上获取更多关于不同算法的细节和信息。

关于java - 传递给 Java 随机数生成器的种子值如何影响其输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6007209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com