Proces Monte Carlo

Monte Carlo simulace v Pythonu

Izzy Weber

Curriculum Manager, DataCamp

Kroky simulace

  1. Definujte vstupní proměnné a zvolte pro ně pravděpodobnostní rozdělení

  2. Generujte vstupy vzorkováním z těchto rozdělení

  3. Proveďte deterministický výpočet simulovaných vstupů

  4. Shrňte výsledky

Monte Carlo simulace v Pythonu

Výpočet hodnoty pi

Generujte náhodné body $(x, y)$, kde $x$ a $y$ leží v intervalu od -1 do 1.

Graf kružnice uvnitř čtverce s náhodně vzorkovanými body

$$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}}$$

Monte Carlo simulace v Pythonu

Krok 1

Definujte vstupní proměnné a zvolte pro ně pravděpodobnostní rozdělení

  • Vstupy: jednotlivé body reprezentované souřadnicemi $(x, y)$
  • Pravděpodobnostní rozdělení: $x$ a $y$ mají rovnoměrné rozdělení od -1 do 1.

 

circle_points = 0 
square_points = 0
Monte Carlo simulace v Pythonu

Krok 2

Generujte vstupy vzorkováním z těchto rozdělení

 

Vzorkujte náhodné hodnoty souřadnic $x$ a $y$ s rovnoměrným rozdělením mezi -1 a 1:

for i in range(n):
    x = random.uniform(-1, 1)
    y = random.uniform(-1, 1)
Monte Carlo simulace v Pythonu

Krok 3

Deterministický výpočet simulovaných vstupů

Kontrolujte, zda každý bod leží uvnitř kružnice: deterministické pro dané $x$ a $y$

dist_from_origin = x**2 + y**2

Pokud ano, přidejte bod do circle_points; vždy přidejte bod do square_points

if dist_from_origin <= 1:
     circle_points += 1
square_points += 1
Monte Carlo simulace v Pythonu

Krok 4

Shrnutí výsledků pro zodpovězení klíčových otázek

 

Po mnoha kolech simulací vypočítejte hodnotu pi!

pi = 4 * circle_points/ square_points
Monte Carlo simulace v Pythonu

Vše dohromady

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
Monte Carlo simulace v Pythonu

Lass uns üben!

Monte Carlo simulace v Pythonu

Preparing Video For Download...