问题描述
我目前正在使用基于锥面的随机游动,并在边界处反射(表示为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]
那样混乱,它非常适合模拟现实世界中的漂移,例如传感器误差。
但是,此方法的一个缺点是要重建步行,您需要记录步行的每个点。我希望有一个具有这些属性的过程,但也可以仅使用几个初始参数来重新生成。
这可能吗?
解决方法
只要这些参数中的至少一个具有无限数量的位,就可以使用“很少”参数来实现。对于无限PRNG,您需要它具有无限数量的可能状态。
鉴于您的计算机只有有限的内存,那么您将不得不满足于大量但有限的状态。一旦PRNG循环通过所有可能的状态,由于它是确定性机器,它将开始重复。