Co je simulace Monte Carlo?

Monte Carlo simulace v Pythonu

Izzy Weber

Curriculum Manager, DataCamp

Simulace a simulace Monte Carlo

Simulace:
  • Pokusy napodobující realitu
  • Často využívají počítačové programy

 

Simulace Monte Carlo:
  • Slouží k předpovědi pravděpodobnosti výsledků ovlivněných náhodnými proměnnými
  • Opírají se o opakované náhodné vzorkování
  • Výsledky jsou stochastické, protože model závisí na náhodném vzorkování
Monte Carlo simulace v Pythonu

Příklad simulace

Hod šestistrannou kostkou
  • Tom hází spravedlivou šestistrannou kostkou $n$krát
  • Po každém hodu zaznamená výsledek
  • Kostku vloží do vaku a na další hod vybere novou

Otázky

  1. Kolik kostek Tom po $n$ hodech nasbírá?
  2. Jaký bude průměrný výsledek po $n$ hodech?

 

ruka hází kostkou

Monte Carlo simulace v Pythonu

Simulace Tomových výsledků

  • total_dice: počet kostek v Tomově vaku po $n$ hodech
  • mean_point_dice: průměr všech výsledků po $n$ hodech
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])
Monte Carlo simulace v Pythonu

Výsledky simulace

Simulace první:

seed=1231

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

Simulace druhá:

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

Výsledky:

[10, 3.6]

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

Výsledky:

[10, 3.8]
[100, 3.28]
[1000, 3.474]
[10000, 3.5508]
Monte Carlo simulace v Pythonu

Zákon velkých čísel

S rostoucím počtem stejně rozdělených náhodně generovaných proměnných se jejich výběrový průměr blíží teoretickému průměru.

Simulace třetí (seed = 3124):

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

Výsledky:

[100000, 3.51344]
[500000, 3.50428]
[1000000, 3.501995]
Monte Carlo simulace v Pythonu

Pojďme procvičovat!

Monte Carlo simulace v Pythonu

Preparing Video For Download...