gpt4 book ai didi

java - MersenneTwister 不提供随机数?

转载 作者:行者123 更新时间:2023-11-29 07:48:12 27 4
gpt4 key购买 nike

我想知道为什么下面的代码,使用 Mersenne Twister(在 java 中),无论我运行多少次,总是给出相同的 99 数字。本质上它不是随机的?

    MersenneTwister mt = new MersenneTwister();
for(int i = 0; i<=99; i++ ) {
System.out.println("Next "+mt.nextDouble());
}

最佳答案

tl;dr:将您的 new MersenneTwister() 更改为 new MersenneTwister(new Date())

伪随机数生成器使用种子 来确定出现的数字序列。如果您不设置,生成器将默认设置一个种子。某些生成器每次默认使用不同的种子,例如使用您计算机的时钟,或从 /dev/urandom 中读取。其他人将默认使用固定种子。

听起来您的生成器默认使用固定种子(MersenneTwister() 的文档说“构造并返回带有默认种子的随机数生成器,这是一个常量” [强调原文])。当然,这会产生相同的数字流。

您应该使用 MersenneTwister(Date) 构造函数(只需使用 new MersenneTwister(new Date()))或 MersenneTwister(int) 一个(尽管这看起来不太理想,因为 int 只有 32 位宽)。

关于java - MersenneTwister 不提供随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23576651/

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