gpt4 book ai didi

java - Java 中的默认种子 PRNG

转载 作者:行者123 更新时间:2023-12-01 18:13:09 26 4
gpt4 key购买 nike

我想知道 Java 中 Math.random() 后面的 PRNG* 的默认种子是什么。据我了解,C 中的时钟是基于系统时钟的。那么Java中是不是也类似呢?另外,每次调用 Math.random() 时种子都会更改吗?

*PRNG = 伪随机数生成器

最佳答案

如果您Read The Fine Manual它告诉你

When this method is first called, it creates a single new pseudorandom-number generator, exactly as if by the expression

new java.util.Random()

This new pseudorandom-number generator is used thereafter for all calls to this method and is used nowhere else.

跟进java.util.Random(),文档说

public Random()

Creates a new random number generator. This constructor sets the seed of the random number generator to a value very likely to be distinct from any other invocation of this constructor.

当前的实现似乎基于System.nanoTime(),但可能会发生变化,但仍然符合文档的约定。

至于每次调用时更改种子,这不是种子的工作方式。 PRNG 被播种一次,然后产生一系列从初始状态演变而来的值。您不应该(Java 也不应该)继续重新播种。

关于java - Java 中的默认种子 PRNG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60425297/

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