所以,我在做作业时遇到了问题。在此之前,我先解决了这个问题,这是在那之前的问题和答案。
假设一只蚂蚁每秒通过一步(x,y)随机游荡,其中在每个蚂蚁步骤中,x和y来自均值为0且标准偏差为1.0mm的正态分布(假设以下所有问题)。在一个小时的时间内绘制蚂蚁的路径轨迹。
def path():
s = 0
steps_x = [s]
for i in range (3600):
mu, sigma = 0, 1
s += np.random.normal(mu, sigma)
steps_x.append(s)
r = 0
steps_y = [r]
for i in range (3600):
mu, sigma = 0, 1
r += np.random.normal(mu, sigma)
steps_y.append(r)
return (steps_x, steps_y)
plt.plot(* path())
让我们考虑一下为什么蚂蚁需要执行路径整合。假设当蚂蚁发现食物时,它没有继续进行路径整合,而是继续以随机的步骤徘徊,直到回到巢穴。通过模拟,发现在一个小时后发现蚂蚁的食物在接下来的一个小时内会回到巢穴10毫米以内的概率(请注意,如果它进入巢穴10毫米以内,它将停止)。这是个好策略吗?为什么或为什么不呢?
我对此编程的尝试:
def path1B():
s = 0
steps_x = [s]
counter = 0
for i in range (3600):
mu, sigma = 0, 1
s += np.random.normal(mu, sigma)
steps_x.append(s)
r = 0
steps_y = [r]
for i in range (3600):
mu, sigma = 0, 1
r += np.random.normal(mu, sigma)
steps_y.append(r)
steps_x
if scipy.spatial.distance.euclidean(steps_x, steps_y) > 10:
for i in range (3600):
mu, sigma = 0, 1
s += np.random.normal(mu, sigma)
steps_x.append(s)
for i in range (3600):
mu, sigma = 0, 1
r += np.random.normal(mu, sigma)
steps_y.append(r)
counter += 1
return counter
total = 0
for i in range (0, 1000):
total += path1B()
print(total/1000)
我基本上尝试做与问题1a中相同的操作,但是我又花了3600步(此后一个小时),如果距离小于10mm,我将打破循环。我并不是想欺骗我的作业,我确实尽力了,但是真的很困