我是python的新手。我正在跟踪一些挑战,其中之一是在某种矩阵(如矩阵)中进行“随机行走”。我实际上首先尝试定义矩阵,并尝试通过某种条件与最近的邻居建立路径,但我不知道该怎么做。
所以我尝试了另一种方法。我有一个循环的步骤,但是我无法重复已使用的网站。我有一个随机条件,可以选择水平或垂直,而其他条件则可以避免超出“矩阵”范围。为了避免重复站点,我使用了“ while”作为其他条件,因为如果它是重复站点,则需要重做随机值(i或j)。我使用“ for”来分析每次x和y数组同时具有重复值。
... #before here there were some start points definitions, etc
for k in range(steps):
if rd.randint(1,2) == 1:
i = rd.randint(max(i-1,0),min(i+1,n))
while ((for w in x, x[w] = i) and (for w in y, y[w] = j):
#this "while" above isn't good, but it was to see if the w term
#of the x and y array were already a pair used in some previous
#iteration
i = rd.randint(max(i-1,0),min(i+1,n))
else:
j = rd.randint(max(j-1,0),min(j+1,n))
while ((for w in x, x[w] = i) and (for w in y, y[w] = j):
j = rd.randint(max(j-1,0),min(j+1,n))
x.append(i)
y.append(j)
显然,它不起作用,但是我无法弄清楚正确的书写方式,在所有尝试中,我只是得到“无效的语法”。我认为通过使用某种矩阵元素随机选择会很简单,但是我不确定该怎么做。
谢谢,我希望它能得到很好的解释。
答案 0 :(得分:0)
您可以使用:
if i not in x:
检查它是否在您的列表中。不需要for循环。这是您可以做到的方式:
i = rd.randint(0,n)
j = rd.randint(0,n)
print("The start point is S[{},{}]".format(i,j))
x = []
y=[]
x.append(i)
y.append(j)
for k in range(10):
if rd.randint(1,2) == 1:
new_i = rd.randint(max(i-1,0),min(i+1,n))
if new_i not in x:
i = new_i
else :
print("I'm not moving")
else:
new_j = rd.randint(max(j-1,0),min(j+1,n))
if new_j not in y:
j = new_j
else :
print("I'm not moving")
x.append(i)
y.append(j)
print("My current position is x = {}; y = {}".format(i,j))