【发布时间】: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