Ce este o simulare Monte Carlo?

Simulări Monte Carlo în Python

Izzy Weber

Curriculum Manager, DataCamp

Simulări și simulări Monte Carlo

Simulări:
  • Experimente care încearcă să imite realitatea
  • Utilizează adesea programe informatice

 

Simulări Monte Carlo:
  • Folosite pentru a prezice probabilitatea unor rezultate influențate de variabile aleatoare
  • Se bazează pe eșantionare aleatoare repetată pentru obținerea rezultatelor numerice
  • Rezultatele sunt stocastice, deoarece modelul se bazează pe eșantionare aleatoare
Simulări Monte Carlo în Python

Exemplu de simulare

Aruncarea unui zar cu șase fețe
  • Tom aruncă un zar corect cu șase fețe de $n$ ori
  • După fiecare aruncare, înregistrează rezultatul
  • Pune zarul într-o pungă și alege unul nou pentru următoarea aruncare

Întrebări

  1. Câte zaruri va colecta Tom după $n$ aruncări?
  2. Care va fi media rezultatelor după $n$ aruncări?

 

o mână aruncând un zar

Simulări Monte Carlo în Python

Simularea rezultatelor lui Tom

  • total_dice: numărul de zaruri din punga lui Tom după $n$ aruncări
  • mean_point_dice: media tuturor rezultatelor după $n$ aruncări
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])
Simulări Monte Carlo în Python

Rezultatele simulării

Simularea unu:

seed=1231

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

Simularea doi:

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

Rezultate:

[10, 3.6]

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

Rezultate:

[10, 3.8]
[100, 3.28]
[1000, 3.474]
[10000, 3.5508]
Simulări Monte Carlo în Python

Legea numerelor mari

Pe măsură ce numărul variabilelor distribuite identic și generate aleatoriu crește, media lor eșantionată se apropie de media teoretică.

Simularea trei (seed = 3124):

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

Rezultate:

[100000, 3.51344]
[500000, 3.50428]
[1000000, 3.501995]
Simulări Monte Carlo în Python

Să exersăm!

Simulări Monte Carlo în Python

Preparing Video For Download...