【问题标题】:Characteristics of the Mersenne Twister - 19937Mersenne Twister 的特点 - 19937
【发布时间】:2014-04-17 22:58:30
【问题描述】:

我有一个非常简单的问题: 当我们使用 Mersenne Twister -19937 生成器并修复种子时,每次调用生成器时,它都会生成具有某些特征(独立性、均匀分布)的数字序列。这里重要的是独立性(或 2 个连续呼叫之间的低相关性)。

现在,如果我有两个带有不同(但固定)种子的 Mersenne Twister -19937 实例,并且我调用每个生成器一次,会发生什么情况。在这种情况下,我得到的两组随机数的独立性、相关性结构如何?

非常感谢

【问题讨论】:

  • 这个问题必须固定到特定的生成器。一般来说,任何事情都可能发生。加密强大的生成器根本没有相互关系。生成器return 0;有很多。

标签: random prng


【解决方案1】:

“保证”不再存在。很可能有一个随机生成器为两个不同的种子生成完全相同的值。

除非您依赖于随机性的某些行为,否则这不是问题。要点当然是密码学 - 密码随机数生成器非常努力地尝试非常随机,即使你是这样的。并行运行 10 台发电机。但是,这种方式违背了可重复性的目的(例如程序生成等)。

但是,这两个生成器确实独立地保留了它们的保证。这意味着只要它们不“交互”(例如,游戏中的两个区域,每个区域都有自己的生成器),就会保留随机性。

一个好的经验法则是测试它(除非随机性很关键,那么它一直是数学:))。绘制图表。在现实世界中找出答案:)

编辑:既然你已经添加了具体的算法,让我稍微扩展一下答案。梅森捻线机是相当随机的。然而,随机性在很大程度上取决于初始值。对于某些种子,即使有几个并行生成器,它也可以产生非常随机的值。对于某些种子,结果非常接近。正如维基指出的那样:

这样做的结果是,生成器的两个实例以几乎相同的初始状态开始,在最终发散之前,将在多次迭代中输出几乎相同的序列。

【讨论】:

  • 谢谢!将尝试在现实世界中找出答案! :)
  • 好的,因此选择完全不同的种子应该有助于解决这个问题
  • @VLT 确实如此。然而,这比看起来更棘手:D 在创建它们时,可能可以使用加密 RNG 为不同的生成器生成种子。但是,这也不能保证任何事情。总的来说,专注于你的实际案例。唯一真正困扰您的是,假随机性对观察者来说是否变得明显(尽管请注意,即使在没有模式的情况下,人们也非常热衷于寻找模式)。
  • 类似种子问题仅在您不使用 Mersenne-Twister 代码的默认种子算法而是直接输入 state=seed 时才有效。默认的种子算法会随机化,相似的初始种子会导致完全不同的状态。
猜你喜欢
  • 2014-02-22
  • 2020-01-10
  • 2013-10-13
  • 2010-12-19
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
  • 2013-01-30
  • 2013-06-11
相关资源
最近更新 更多