Qu'est-ce qu'une simulation de Monte-Carlo?

Simulations de Monte-Carlo en Python

Izzy Weber

Curriculum Manager, DataCamp

Simulations et simulations de Monte-Carlo

Simulations :
  • Expériences qui cherchent à imiter la réalité
  • Souvent réalisées par ordinateur

 

Simulations de Monte-Carlo :
  • Servent à estimer la probabilité de différents résultats influencés par des variables aléatoires
  • S'appuient sur des échantillonnages aléatoires répétés pour obtenir des résultats numériques
  • Résultats stochastiques puisque le modèle repose sur l'échantillonnage aléatoire
Simulations de Monte-Carlo en Python

Exemple de simulation

Lancer un dé à six faces
  • Tom lance un dé à six faces équilibré $n$ fois
  • Après chaque lancer, il note le résultat
  • Puis il met le dé dans un sac et en choisit un nouveau pour le lancer suivant

Questions

  1. Combien de dés Tom aura-t-il après $n$ lancers?
  2. Quelle sera la moyenne des résultats après $n$ lancers?

 

une main lançant un dé

Simulations de Monte-Carlo en Python

Simuler les résultats de Tom

  • total_dice : nombre de dés dans le sac de Tom après $n$ lancers
  • mean_point_dice : moyenne de tous les résultats après $n$ lancers
import random
import numpy as np

def roll_dice(n, seed): random.seed(seed) total_dice = 0 point_dice = []
for i in range(n): total_dice += 1 point_dice.append(random.randint(1, 6))
mean_point_dice = np.mean(point_dice)
return([total_dice, mean_point_dice])
Simulations de Monte-Carlo en Python

Résultats de simulation

Simulation 1 :

seed=1231

print(roll_dice(10, seed))
print(roll_dice(100, seed))
print(roll_dice(1000, seed))
print(roll_dice(10000, seed))

Simulation 2 :

seed=3124
print(roll_dice(10, seed))
print(roll_dice(100, seed))
print(roll_dice(1000, seed))
print(roll_dice(10000, seed))

Résultats :

[10, 3.6]

[100, 3.5]
[1000, 3.495]
[10000, 3.503]

Résultats :

[10, 3.8]
[100, 3.28]
[1000, 3.474]
[10000, 3.5508]
Simulations de Monte-Carlo en Python

La loi des grands nombres

Quand le nombre de variables aléatoires identiquement distribuées augmente, leur moyenne empirique tend vers leur moyenne théorique.

Simulation 3 (seed = 3124) :

print(roll_dice(100000, seed))
print(roll_dice(500000, seed))
print(roll_dice(1000000, seed))

Résultats :

[100000, 3.51344]
[500000, 3.50428]
[1000000, 3.501995]
Simulations de Monte-Carlo en Python

Passons à la pratique !

Simulations de Monte-Carlo en Python

Preparing Video For Download...