为什么 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 次。
问题不在于随机数生成器,而在于列表理解。
正在执行:
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 次。
问题不在于随机数生成器,而在于列表理解。