有停止条件的随机行走

问题描述

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

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时,总和不累加?

解决方法

您可以使用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")

Random Walk