Kom igångKom igång gratis

Felaktiga indatafördelningar

Du fortsätter att arbeta med pi-exemplet i den här övningen: A graph of a circle inside a square with randomly sampled points

Vad händer om du byter ut den kontinuerliga likformiga fördelningen (random.uniform()) mot den diskreta likformiga fördelningen (random.randint())? Resultaten blir opålitliga, eftersom random.randint() samplar diskreta heltal medan random.uniform() samplar kontinuerliga flyttal.

Lägg märke till det uppskattade pi-värdet som simuleringen genererar. Eftersom fel sannolikhetsfördelning har valts kommer resultatet inte att vara särskilt exakt! Att välja rätt sannolikhetsfördelningar är avgörande för Monte Carlo-simuleringar. I kommande lektioner går vi igenom olika fördelningar i detalj, så att du känner dig trygg i dina val framöver.

random har redan importerats åt dig.

Den här övningen är en del av kursen

Monte Carlo-simuleringar i Python

Visa kurs

Övningsinstruktioner

  • Sampla x- och y-koordinaterna i intervallet från -1 till 1 med random.randint() i stället för den korrekta funktionen random.uniform() som användes i videon.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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)
Redigera och kör kod