如何将竞技场限制放在随机游走?

时间:2014-10-15 19:03:20

标签: r random-walk

我建立了一个有偏差的相关随机游走,我设法建立了RW,并将其偏向西方运动。

问题:我需要将步行绑定在一个(或所有)方面。

目前的代码是:

walk<-function(n.times){ 
   plot(524058:542800,2799758:2818500,type="n",
      xlab="Easting",ylab="Northing")#aren‌​a 
      y<-2815550 ##startY 
      x<-542800 #startX
      N<-4000
      E<-4000
      points(x,y,pch=16,col="red",cex=1)
      for (i in 1:n.times) {
          yi <- sample(c(N,N/2,N/4,N/8,N/12,N/16,
                      0,-N,-N/2,-N/4,-N/8,-N/12,-N/16),1)      
          xi<-sample(c(E,E/12,E/16, 0,-E,-E/2,-E/4,-E/8,-E/12,-E/16),1)       
          lines(c(x,x+xi),c(y,y+yi),col="blue")
          x<-x+xi
          y<-y+yi 
      }
   }
   iterations<-125 
   walk(iterations) 

到目前为止,我最接近的是

 if(y>2818500 | y<2799758 | x>542800 | x<524058)  break 

如果它离开竞技场就会停止行走。

1 个答案:

答案 0 :(得分:9)

该函数的略微清理版本:主要更改是添加repeat {}循环,该循环将重新选择该步骤,直到新位置在限制范围内(也可以使用{{1循环)。

更新:没有仔细阅读问题陈述,忘记了偏见。该代码以与OP代码相同的方式包含偏差。对于N-S运动,平均步长为0;对于E-W运动,通过省略一些积极的步骤可能性,我们得到while() {}等于-0.0875;由于步骤可能性是均匀采样的,因此步行向左漂移平均每步mean(steps.x)个单位。

0.0875*stepsize[1]

enter image description here