【问题标题】:Can you construct a deterministic infinite RNG with just a few known parameters?你能用几个已知参数构建一个确定性的无限 RNG 吗?
【发布时间】:2020-12-31 12:26:20
【问题描述】:

我目前正在使用基于锥形的随机游走,在边界处有反射(表示为 R[n]),具有以下属性:

  • R[n] 始终在用户定义的范围内(称为边界)[a, b](或 [-a, a],如果这样更容易的话)
  • R[0] 由用户定义
  • |R[n]-R[n-1]|<d 一些 d <= b - a (这是锥体属性)
  • 如果生成的R[n] 落在边界之外,则将其反射到最近的边界,这样就不会在边缘累积概率质量

你可以在这里看到这个过程的可视化(R[0] 在图中是“R”):

如你所见,红点是反射,虚线代表“锥体”

这是一个非常好的过程,有几个原因:

  • 它均匀地走在范围内
  • 它有一个明确的期望值,即(b-a)/2
  • 它不像 Uni[a, b] 那样混乱,它非常适合模拟真实世界的漂移,例如传感器错误。

但是,这种方法的一个缺陷是,要重建步行,您需要记录步行的每一个点。我想要一个具有这些属性的进程,但也可以只使用几个初始参数重新生成。

这可能吗?

【问题讨论】:

  • 你可以构造确定性的伪RNG,但周期会受到限制。唯一的问题是您想要月经多长时间,著名的 Mersenne Twister 的月经周期约为 2^20K。你需要它更大吗?
  • 是的,实际上效果很好,不敢相信我没想过只将种子用于 PRNG(我一直在使用你显然无法复制的 CSPRNG)跨度>

标签: random statistics random-walk


【解决方案1】:

只要这些参数中的至少一个具有无限位数,您就可以使用“少数”参数来做到这一点。对于无限 PRNG,您需要它能够拥有无限数量的可能状态。

鉴于您的计算机只有有限的内存,那么您将不得不满足于大量但有限的状态。一旦 PRNG 循环通过所有可能的状态,它将开始重复,因为它是一个确定性机器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 2021-09-13
    • 1970-01-01
    相关资源
    最近更新 更多