Le processus de Monte-Carlo

Simulations de Monte-Carlo en Python

Izzy Weber

Curriculum Manager, DataCamp

Étapes de simulation

  1. Définir les variables d'entrée et choisir leurs lois de probabilité

  2. Générer des entrées en échantillonnant ces lois

  3. Effectuer un calcul déterministe sur les entrées simulées

  4. Résumer les résultats

Simulations de Monte-Carlo en Python

Calculer la valeur de pi

Générer des points aléatoires $(x, y)$ où $x$ et $y$ sont dans l'intervalle de -1 à 1.

Un graphique d'un cercle dans un carré avec des points échantillonnés aléatoirement

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

Simulations de Monte-Carlo en Python

Étape 1

Définir les variables d'entrée et choisir leurs lois de probabilité

  • Entrées : les points individuels représentés par des coordonnées $(x, y)$
  • Lois de probabilité : $x$ et $y$ suivent des lois uniformes de moins un à un.

 

circle_points = 0 
square_points = 0
Simulations de Monte-Carlo en Python

Étape 2

Générer des entrées en échantillonnant ces lois

 

Échantillonner des valeurs aléatoires $x$ et $y$ distribuées uniformément entre -1 et 1 :

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

Étape 3

Effectuer un calcul déterministe sur les entrées simulées

Vérifier si chaque point est dans le cercle : déterministe pour des $x$ et $y$ donnés

dist_from_origin = x**2 + y**2

Si oui, ajouter le point à circle_points ; toujours ajouter le point à square_points

if dist_from_origin <= 1:
     circle_points += 1
square_points += 1
Simulations de Monte-Carlo en Python

Étape 4

Résumer les résultats pour répondre aux questions d'intérêt

 

Après de nombreuses simulations, calculer la valeur de pi !

pi = 4 * circle_points/ square_points
Simulations de Monte-Carlo en Python

Le tout ensemble

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
Simulations de Monte-Carlo en Python

Passons à la pratique !

Simulations de Monte-Carlo en Python

Preparing Video For Download...