НачатьНачать бесплатно

Неправильные входные распределения

В этом упражнении вы продолжите работу с примером вычисления числа π: A graph of a circle inside a square with randomly sampled points

Что произойдёт, если заменить непрерывное равномерное распределение (random.uniform()) на дискретное равномерное распределение (random.randint())? Результаты окажутся ненадёжными: random.randint() генерирует дискретные целые числа, тогда как random.uniform() генерирует непрерывные числа с плавающей точкой.

Обратите внимание на приближённое значение π, которое выдаёт симуляция. Поскольку выбрано неподходящее вероятностное распределение, точность будет невысокой. Правильный выбор распределений — это основа метода Монте-Карло. В следующих уроках мы подробно рассмотрим различные распределения, чтобы вы могли уверенно выбирать нужное.

Библиотека random уже импортирована.

Это упражнение является частью курса

Симуляции Монте-Карло на Python

Посмотреть курс

Инструкции к упражнению

  • Сгенерируйте координаты x и y в интервале от -1 до 1 с помощью random.randint() вместо правильной функции random.uniform(), которая использовалась в видео.

Интерактивное практическое упражнение

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

n = 10000
circle_points = 0 
square_points = 0 
for i in range(n):
    # Sample the x and y coordinates from -1 to 1 using random.randint()
    x = ____
    y = ____
    dist_from_origin = x**2 + y**2
    if dist_from_origin <= 1:
        circle_points += 1
    square_points += 1
pi = 4 * circle_points / square_points
print(pi)
Редактировать и запускать код