带停止条件的随机游走

Random walk with stop condition

我有以下用于随机游走的生成器代码:

i = 1
t = 100
p = 0.5

max_walk = 1000

samples = rbinom(max_walk, 1, p)
samples[samples==0] = -1
walk = c(i, cumsum(samples))

在我的例子中,i 是第一步的值,t 是最大值,零是最小值。所以当值小于或等于零或大于或等于 t 时,我的步行将不得不停止。

有什么办法吗?或者当各自的结果小于或等于零或大于或等于 t 时,cumsum 可能不会相加?

您可以使用 while() 构造一个循环,但只需 运行 您编写的代码然后确定停止点就更简单了:

stop <- which(walk < 1 | walk > max_walk)
stop[1]                # First stop
# [1] 13
walk[stop[1]]          # Value at first stop
# [1] 0
plot(walk, type="l")   # Plot entire walk
points(stop[1], walk[stop[1]], col="red")