Ant Path Integration в Python и вычисление вероятностей - PullRequest
0 голосов
/ 05 февраля 2019

ОБНОВЛЕН НОВЫЙ КОД

Итак, у меня проблема с домашней работой.Прежде, чем я доберусь до этой проблемы, вот проблема и ответ перед ней.

Задача 1a

Предположим, что муравей случайно бродил, совершая шаги (x, y), один в секундугде на каждом шаге муравья x и y происходят из нормального распределения со средним значением 0 и стандартным отклонением 1,0 мм (допустим, это для всех вопросов ниже).Нарисуйте след пути муравья в течение часа.

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 ())

Задача 1B

Давайте подумаем, почемуМуравьи должны выполнить интеграцию пути.Предположим, что вместо интеграции пути, когда муравей нашел пищу, он просто продолжал блуждать случайными шагами, пока не вернулся в гнездо.Используя симуляцию, найдите вероятность того, что муравей, который найдет пищу через 1 час, вернется в гнездо в пределах 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)  

Я в основном пытался сделать то же самое, что и в задаче 1а, но я сделал дополнительные 3600 шагов (часпосле) и если бы расстояние достигло менее 10 мм, я бы просто разорвал петлюЯ не пытаюсь обмануть домашнее задание, я искренне стараюсь, но я действительно застрял

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...