Aan de slagGa gratis aan de slag

Onjuiste invoerverdelingen

Je gaat in deze oefening verder met het pi-voorbeeld: A graph of a circle inside a square with randomly sampled points

Wat gebeurt er als je de invoerwaarschijnlijkheidsverdeling wijzigt van de continue uniforme verdeling (random.uniform()) naar de discrete uniforme verdeling (random.randint())? Je resultaten zijn dan niet betrouwbaar, omdat random.randint() discrete gehele getallen trekt, terwijl random.uniform() continue kommagetallen (floats) trekt.

Let op de geschatte pi-waarde die deze simulatie oplevert. Omdat de verkeerde kansverdeling is gekozen, zal die niet erg nauwkeurig zijn! De juiste kansverdelingen kiezen is cruciaal voor Monte Carlo-simulaties. In latere lessen gaan we dieper in op verschillende verdelingen, zodat je er zeker van bent dat je de juiste kiest.

random is al voor je geïmporteerd.

Deze oefening maakt deel uit van de cursus

Monte Carlo-simulaties in Python

Cursus bekijken

Oefeninstructies

  • Trek de x- en y-coördinaten in het interval van -1 tot 1 met random.randint() in plaats van de juiste functie random.uniform() die in de video is gebruikt.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

n = 10000
circle_points = 0 
square_points = 0 
for i in range(n):
    # Sample the x and y coordinates from -1 to 1 using random.randint()
    x = ____
    y = ____
    dist_from_origin = x**2 + y**2
    if dist_from_origin <= 1:
        circle_points += 1
    square_points += 1
pi = 4 * circle_points / square_points
print(pi)
Code bewerken en uitvoeren