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

Cir*_*red 2 random julia random-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")
Run Code Online (Sandbox Code Playgroud)

生成以下输出:

[0.533183、0.533183、0.533183、0.533183]
[0.533183、0.454029、0.0176868、0.172933]

两个序列不应该相同吗?我想念什么?

我在多个系统上都得到了相同的结果,而与是否创建vfirst或无关w

Hel*_*aya 8

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

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