У меня есть случайная прогулка по 2D-сетке со случайно инициализированными позициями. Я ищу условие, при котором, если случайное блуждание находится в пределах некоторого диапазона начальных позиций других случайных блужданий, оно остановится.
Хотя я обнаружил, что это легко реализовать в простом случае, у меня возникли проблемы с реализацией в случае N случайных блужданий. Это связано с тем, что код должен проверять диапазон значений вокруг каждой начальной позиции, кроме той, которая находится вокруг текущего случайного блуждания.
P.S. Это мой первый пост о переполнении стека. Пожалуйста, дайте мне знать, если я был слишком расплывчатым или не следовал правилам задавать вопросы здесь.
import numpy.random as rd #importing libraries
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import numpy.ma as ma
lsize=100
T=1000 #n of steps
N=5 #n of walks
xvec=np.zeros(N)
yvec=np.zeros(N)
xstore=np.zeros(T+1)
ystore=np.zeros(T+1)
xmat=np.zeros((T+1,N))
ymat=np.zeros((T+1,N))
for i in range(N): #randomly assigns initial position
xcor=rd.randint(1,lsize)
ycor=rd.randint(1,lsize)
xvec[i]=xcor
yvec[i]=ycor
for i in range(N):
xstore[0]=xvec[i]
ystore[0]=yvec[i]
for j in range(T):
A=[0,1,2,3]
temp=rd.choice(A)
if temp==0:
ystore[j+1]=ystore[j]+1 #up
xstore[j+1]=xstore[j]
elif temp==1:
xstore[j+1]=xstore[j]+1 #right
ystore[j+1]=ystore[j]
elif temp==2:
ystore[j+1]=ystore[j]-1 #down
xstore[j+1]=xstore[j]
elif temp==3:
xstore[j+1]=xstore[j]-1 #left
ystore[j+1]=ystore[j]
xstore[j+1]=np.mod(xstore[j+1], lsize+1)
ystore[j+1]=np.mod(ystore[j+1], lsize+1)
xmat[:,i]=xstore
ymat[:,i]=ystore
plt.plot(xmat,ymat)
plt.show()