正方格子上の 2 次元で自己回避ランダム ウォークをシミュレートし、パスをプロットしたいと考えています。
これまでのところ、この問題のコードを書きました。
n <- 100
x <- 0
y <- 0
randomwalkx <- 0
randomwalky <- 0
for(i in 1:n){
random <- sample(0:3, 1)
if(random == 0){x <- x+1}
if(random == 1){x <- x-1}
if(random == 2){y <- y+1}
if(random == 3){y <- y-1}
xcheck <- x %in% randomwalkx
ycheck <- y %in% randomwalky
if(ycheck == "TRUE" && xcheck == "TRUE"){
if(random==0){x<-x-1}
if(random==1){x<-x+1}
if(random==2){y<-y-1}
if(random==3){y<-y+1}
}else{
randomwalkx <- c(randomwalkx, x)
randomwalky <- c(randomwalky, y)
}
}
plot(randomwalkx,randomwalky,xlab='x',ylab='y')
lines(randomwalkx,randomwalky,type='b')
ただし、パスは 1 つの斜め方向にのみ移動します。私が犯した間違いを誰かが見たり、この問題を解決したりできますか?