编程语言
首页 > 编程语言> > Java中的默认种子PRNG

Java中的默认种子PRNG

作者:互联网

我想知道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,random,prng
来源: https://codeday.me/bug/20190612/1227158.html