为什么 MersenneTwister 似乎为同一种子生成不同的序列?

Why does MersenneTwister seem to generate different sequences for the same seed?

正在执行:

using Random

rng1 = MersenneTwister(42)
rng2 = MersenneTwister(42)

v = [ x for _ = 1:4, x = rand(rng1) ]
w = [ rand(rng2) for _ = 1:4 ]

print("$(v)\n$(w)\n")

生成以下输出:

[0.533183, 0.533183, 0.533183, 0.533183]
[0.533183, 0.454029, 0.0176868, 0.172933]

这两个序列不应该是一样的吗?我错过了什么?

我在多个系统上得到相同的结果,无论我是先创建 v 还是 w

如你所见,v的所有元素都是相同的。您用来构造 v 的列表理解仅评估 rand(rng1) 一次,然后复制相同的值 4 次。

问题不在于随机数生成器,而在于列表理解。