Kodehjelp: Oppgave 1 (sannsynlighet)
La oss først lage litt kode som lager et tilfeldig koordinat:
from random import randint p_x, p_y = randint(1,1000), randint(1,1000)
Her har jeg benyttet meg av funksjonen «randint» fra modulen «random». Jeg oppretter to variabler, «p_x» og «p_y», og setter tilfeldige verdier til dem. I python kan man sette opp flere variabler per linje, hvis vi skiller dem med komma.
Deretter trenger jeg å sjekke om dette punktet er i det lille kvadratet eller ikke:
from random import randint p_x, p_y = randint(1,1000), randint(1,1000) if p_x in range(251,750) and p_y in range(251,750): print("Treff") else: print("Bom")
Her tester jeg om variabelen befinner seg i et område, en «range», fra 251 til 750. Dette er jo der jeg ser for meg at koordinatene til det lille kvadratet må være. Dersom dette gjelder for begge variablene, så skrives «Treff» på skjermen, ellers skrives «Bom».
Linje 5 kan utformes på flere måter. Vi kunne skrevet:
if p_x > 250 and p_x < 751 and p_y > 250 and p_y < 751:
OK! Nå får vi testet om vi treffer på ett forsøk. Vi bør gjennomføre dette forsøket minst 1000 ganger for å få tall vi kan stole på; kanskje en million ganger. Vi begynner med 1000, og oppretter derfor en teller som teller opp hver gang vi treffer:
from random import randint teller = 0 for i in range(1000): p_x, p_y = randint(1,1000), randint(1,1000) if p_x in range(251,750) and p_y in range(251,750): teller += 1 print(teller)
Jeg setter en teller til 0, og deretter legger jeg den tidligere koden inn i en løkke som kjøres 1000 ganger. Dersom det er treff, øker jeg teller med 1 (linje 8). Denne skrivemåten er det samme som å skrive:
teller = teller +1
I stedet for å skrive antall treff, bør vi heller skrive ut sannsynligheten for treff. Vi bruker formelen for sannsynlighet (gunstige/mulige):
from random import randint teller = 0 ant = 100000 for i in range(ant): p_x, p_y = randint(1,1000), randint(1,1000) if p_x in range(251,750) and p_y in range(251,750): teller += 1 print(teller/ant)
Her har jeg økt antall forsøk til 100 000 ganger, og skriver ut beregnet sannsynlighet. Dersom vi ønsker å runde av til 2 desimaler, gjøres dette slik:
from random import randint teller = 0 ant = 100000 for i in range(ant): p_x, p_y = randint(1,1000), randint(1,1000) if p_x in range(251,750) and p_y in range(251,750): teller += 1 print(round(teller/ant,2))