Procesul Monte Carlo

Simulări Monte Carlo în Python

Izzy Weber

Curriculum Manager, DataCamp

Pașii simulării

  1. Definiți variabilele de intrare și alegeți distribuțiile de probabilitate

  2. Generați intrările prin eșantionare din aceste distribuții

  3. Efectuați un calcul determinist al intrărilor simulate

  4. Sintetizați rezultatele

Simulări Monte Carlo în Python

Calcularea valorii lui pi

Generați puncte aleatoare $(x, y)$ unde $x$ și $y$ sunt în intervalul de la -1 la 1.

Grafic cu un cerc înscris într-un pătrat cu puncte eșantionate aleator

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

Simulări Monte Carlo în Python

Pasul 1

Definiți variabilele de intrare și alegeți distribuțiile de probabilitate

  • Intrări: punctele individuale reprezentate prin coordonate $(x, y)$
  • Distribuții de probabilitate: $x$ și $y$ urmează distribuții uniforme de la -1 la 1.

 

circle_points = 0 
square_points = 0
Simulări Monte Carlo în Python

Pasul 2

Generați intrările prin eșantionare din aceste distribuții

 

Eșantionați valori aleatoare pentru coordonatele $x$ și $y$, distribuite uniform între -1 și 1:

for i in range(n):
    x = random.uniform(-1, 1)
    y = random.uniform(-1, 1)
Simulări Monte Carlo în Python

Pasul 3

Efectuați calculul determinist al intrărilor simulate

Verificați dacă fiecare punct se află în interiorul cercului: determinist pentru $x$ și $y$ date

dist_from_origin = x**2 + y**2

Dacă da, adăugați punctul la circle_points; adăugați întotdeauna punctul la square_points

if dist_from_origin <= 1:
     circle_points += 1
square_points += 1
Simulări Monte Carlo în Python

Pasul 4

Sintetizați rezultatele pentru a răspunde la întrebările de interes

 

După mai multe runde de simulări, calculați valoarea lui pi!

pi = 4 * circle_points/ square_points
Simulări Monte Carlo în Python

Totul împreună

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
Simulări Monte Carlo în Python

Să exersăm!

Simulări Monte Carlo în Python

Preparing Video For Download...