Число пи методом Монте-Карло

Случайные точки и немного геометрии — и компьютер «угадывает» число $\pi$.

Метод Монте-Карло — способ оценки величин с помощью случайных испытаний и подсчёта доли «удачных» исходов.

Ряд Лейбница вычисляет $\pi$ детерминированно. А можно ли получить $\pi$ из чистой случайности? Да — методом Монте-Карло, названным в честь знаменитого казино. Идея в том, что вероятность связана с площадью.

Геометрия испытания

Возьмём единичный квадрат $[0,1] \times [0,1]$ и впишем в него четверть круга радиуса 1. Площадь квадрата равна 1, площадь четверти круга — $\pi/4$. Бросаем случайную точку в квадрат; вероятность попасть в четверть круга равна отношению площадей:

$$\mathbb{P}(\text{точка в круге}) = \frac{\pi/4}{1} = \frac{\pi}{4}.$$

Точка $(x, y)$ попадает в четверть круга, если $x^2 + y^2 \le 1$. Бросив много точек и посчитав долю попавших, умножим её на 4 — получим оценку $\pi$.

Бросаем точки

import random

random.seed(42)
trials = 100000
inside = 0
for _ in range(trials):
    x = random.random()
    y = random.random()
    if x * x + y * y <= 1.0:
        inside += 1

pi_estimate = 4 * inside / trials
print("Точек внутри круга:", inside, "из", trials)
print("Оценка pi:", pi_estimate)
print("Истинное pi: 3.141593")

Вывод:

Точек внутри круга: 78432 из 100000
Оценка pi: 3.13728
Истинное pi: 3.141593

Как работает под капотом

Мы зафиксировали зерно генератора (random.seed(42)), чтобы результат был воспроизводимым — без него каждый запуск давал бы чуть иное число около 3,14. Точность метода Монте-Карло растёт как $1/\sqrt{N}$: чтобы добавить один десятичный знак, нужно в сто раз больше точек. Это медленнее многих рядов, но метод бесценен там, где аналитической формулы нет: им считают сложные интегралы, моделируют физику частиц и оценивают финансовые риски. Геометрический смысл прост — мы «измеряем» площадь круга, забрасывая его дождём случайных точек.

Частые ошибки

Не сравнивайте расстояние с радиусом через корень: условие $x^2 + y^2 \le 1$ эквивалентно $\sqrt{x^2+y^2} \le 1$, но без лишней операции. Не забудьте множитель 4 (мы считаем четверть круга). И помните про статистическую природу: одна реализация даёт приближение, а не точное значение, и разброс уменьшается лишь как корень из числа испытаний.

Итог

  • Доля точек в четверти круга равна $\pi/4$.
  • Условие попадания: $x^2 + y^2 \le 1$.
  • Оценка $\pi$ = 4 · (доля попавших).
  • Точность растёт как $1/\sqrt N$ — медленно, но метод универсален.
Проверьте себя
1. Чему равна вероятность попадания случайной точки единичного квадрата в вписанную четверть круга?
A$\pi$
B$\pi/2$
C$\pi/4$
D$1/4$
2. Как точность метода Монте-Карло зависит от числа испытаний $N$?
AНе зависит
BРастёт как $1/\sqrt N$
CРастёт линейно по $N$
DРастёт как $N^2$
3. Зачем в коде вызывают $random.seed(42)$?
AЧтобы ускорить генерацию
BЧтобы результат был воспроизводимым при каждом запуске
CЧтобы получить ровно 42 точки
DЭто обязательно для работы random