Wat is een Monte Carlo-simulatie?

Monte Carlo-simulaties in Python

Izzy Weber

Curriculum Manager, DataCamp

Simulaties en Monte Carlo-simulaties

Simulaties:
  • Experimenten die de werkelijkheid nabootsen
  • Gebruiken vaak computerprogramma’s

 

Monte Carlo-simulaties:
  • Voorspellen de kans op uitkomsten beïnvloed door willekeurige variabelen
  • Steunen op herhaald willekeurig steekproeven voor numerieke resultaten
  • Resultaten zijn stochastisch omdat het model op toeval steunt
Monte Carlo-simulaties in Python

Simulatievoorbeeld

Werpen met een zeszijdige dobbelsteen
  • Tom werpt een eerlijke zeszijdige dobbelsteen $n$ keer
  • Na elke worp noteert hij de uitkomst
  • Daarna stopt hij de dobbelsteen in een zak en pakt voor de volgende worp een nieuwe

Vragen

  1. Hoeveel dobbelstenen heeft Tom na $n$ worpen?
  2. Wat is het gemiddelde na $n$ worpen?

 

een hand die een dobbelsteen werpt

Monte Carlo-simulaties in Python

Toms uitkomsten simuleren

  • total_dice: het aantal dobbelstenen in Toms zak na $n$ worpen
  • mean_point_dice: het gemiddelde van alle uitkomsten na $n$ worpen
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-simulaties in Python

Simulatieresultaten

Simulatie één:

seed=1231

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

Simulatie twee:

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

Resultaten:

[10, 3.6]

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

Resultaten:

[10, 3.8]
[100, 3.28]
[1000, 3.474]
[10000, 3.5508]
Monte Carlo-simulaties in Python

De wet van de grote aantallen

Als het aantal identiek verdeelde, willekeurig gegenereerde variabelen toeneemt, nadert hun steekproefgemiddelde het theoretische gemiddelde.

Simulatie drie (seed = 3124):

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

Resultaten:

[100000, 3.51344]
[500000, 3.50428]
[1000000, 3.501995]
Monte Carlo-simulaties in Python

Laten we oefenen!

Monte Carlo-simulaties in Python

Preparing Video For Download...