Il processo Monte Carlo

Simulazioni Monte Carlo in Python

Izzy Weber

Curriculum Manager, DataCamp

Passi della simulazione

  1. Definisci le variabili di input e scegli le loro distribuzioni

  2. Genera gli input campionando da queste distribuzioni

  3. Esegui un calcolo deterministico sugli input simulati

  4. Riepiloga i risultati

Simulazioni Monte Carlo in Python

Calcolo di pi greco

Genera punti casuali $(x, y)$ con $x$ e $y$ nell'intervallo da -1 a 1.

Un grafico di un cerchio dentro un quadrato con punti campionati casualmente

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

Simulazioni Monte Carlo in Python

Passo 1

Definisci le variabili di input e scegli per ognuna una distribuzione

  • Input: i singoli punti con coordinate $(x, y)$
  • Distribuzioni: $x$ e $y$ seguono una uniforme da -1 a 1.

 

circle_points = 0 
square_points = 0
Simulazioni Monte Carlo in Python

Passo 2

Genera gli input campionando da queste distribuzioni

 

Campiona valori casuali $x$ e $y$ uniformi tra -1 e 1:

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

Passo 3

Esegui il calcolo deterministico sugli input simulati

Verifica se ogni punto è dentro il cerchio: deterministico per dati $x$ e $y$

dist_from_origin = x**2 + y**2

Se sì, aggiungi il punto a circle_points; aggiungi sempre il punto a square_points

if dist_from_origin <= 1:
     circle_points += 1
square_points += 1
Simulazioni Monte Carlo in Python

Passo 4

Riepiloga i risultati per rispondere alle domande d'interesse

 

Dopo molte simulazioni, calcola il valore di pi greco!

pi = 4 * circle_points/ square_points
Simulazioni Monte Carlo in Python

Tutto insieme

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
Simulazioni Monte Carlo in Python

Ayo berlatih!

Simulazioni Monte Carlo in Python

Preparing Video For Download...