我必须为二维空间中的一系列位置生成一个随机行走。进行随机行走的人从(0,0)开始。每次移动时,她都向左、向右、向上或向下移动。如果她回到(0,0),或者直到她走了1000步,随机行走就停止了。* 我使用的是R语言
到目前为止,我已经完成了这一步,但是我很难弄清楚当随机漫步再次到达(0,0)时如何停止随机漫步。我只得到了两个向量。任何帮助都将非常感激。谢谢!
step.max<-1000
destination<-rbind(c(0,0))
Random.walk <- function(n=step.max){
steps <- matrix(c(0,0,-1,1,0,-1,1,0),nrow = 4)
walk <- steps[sample(1:5,n,replace = TRUE)]
walk.1 <-rbind(walk)
ifelse(destination,break,apply(walk.1,2,cumsum))
}
Random.walk(n)
2条答案
按热度按时间3phpmpom1#
如果你想在到达原点时停止,你必须使用循环。或者你可以快速生成一个1000步的随机行走,并确定何时到达原点:
现在生成一个1000步的随机漫步:
现在说明结果:
如果你想在位置返回到c(0,0)时中断行走,你需要一个循环。
变量
position
将包含步行期间访问的所有位置。如果您想知道行走在1000步之前返回原点的频率,我们需要为行走创建一个函数,然后使用
replicate
生成多个行走,例如10,000:因此,大约68%的情况下,遍历在1000步以内结束。您可以增加复制次数。如果您多次运行此过程,百分比将在67 - 68%之间变化。您可以通过增加复制次数来缩小范围,但代码将需要更长的时间来运行。
vfh0ocws2#
下面是一个完全矢量化的函数,它将返回随机游走中的位置矩阵,该矩阵将有
n + 1
行(它包括原点的原始位置),除非游走返回原点。第14步返回原点的步行:
在n步内不返回原点的行走