Процес Монте-Карло

Моделювання Монте-Карло в Python

Izzy Weber

Curriculum Manager, DataCamp

Кроки моделювання

  1. Визначте вхідні змінні та оберіть для них розподіли ймовірностей

  2. Згенеруйте входи, вибираючи випадки з цих розподілів

  3. Виконайте детермінований розрахунок змодельованих входів

  4. Підсумуйте результати

Моделювання Монте-Карло в Python

Обчислення значення π

Згенеруйте випадкові точки $(x, y)$, де $x$ і $y$ у проміжку від -1 до 1.

Графік кола всередині квадрата з випадково вибраними точками

$$Area_{circle} = \pi $$

$$Area_{square} = 2 \times 2 = 4 $$

$$\frac{Area_{circle}}{Area_{square}} = \frac{\pi}{4} $$

$$\frac{n_{red}}{n_{all}} = \frac{\pi}{4} $$

$$ \pi = 4 \times \frac{n_{red}}{n_{all}}$$

Моделювання Монте-Карло в Python

Крок 1

Визначте вхідні змінні та оберіть для них розподіли ймовірностей

  • Входи: окремі точки, задані координатами $(x, y)$
  • Розподіли ймовірностей: $x$ і $y$ мають рівномірний розподіл від мінус одного до одного.

 

circle_points = 0 
square_points = 0
Моделювання Монте-Карло в Python

Крок 2

Згенеруйте входи, вибираючи випадки з цих розподілів

 

Виберіть випадкові значення координат $x$ і $y$, рівномірно розподілені між -1 та 1:

for i in range(n):
    x = random.uniform(-1, 1)
    y = random.uniform(-1, 1)
Моделювання Монте-Карло в Python

Крок 3

Виконайте детермінований розрахунок змодельованих входів

Перевірте, чи лежить кожна точка всередині кола: детерміновано для заданих $x$ і $y$

dist_from_origin = x**2 + y**2

Якщо так — додайте точку до circle_points; завжди додавайте точку до square_points

if dist_from_origin <= 1:
     circle_points += 1
square_points += 1
Моделювання Монте-Карло в Python

Крок 4

Підсумуйте результати, щоб відповісти на цікаві питання

 

Після багатьох ітерацій симуляцій обчисліть значення π!

pi = 4 * circle_points/ square_points
Моделювання Монте-Карло в Python

Усе разом

n = 4000000
circle_points = 0 
square_points = 0

for i in range(n): x = random.uniform(-1, 1) y = random.uniform(-1, 1) dist_from_origin = x**2 + y**2 if dist_from_origin <= 1: circle_points += 1 square_point += 1
pi = 4 * circle_points / square_points print(pi)
3.142518
Моделювання Монте-Карло в Python

Давайте потренуємось!

Моделювання Монте-Карло в Python

Preparing Video For Download...