Programmering og normalfordeling - simulering S2 V26
Øystein har skrevet programkoden nedenfor.
from numpy.random import normal
#normal(forventningsverdi, standardavvik) gir en tilfeldig verdi fra en normalfordeling
SIMULERINGER = 100
GRENSE = 110
A_vinner = 0
B_vinner = 0
for i in range(SIMULERINGER):
A = normal(80, 20)
B = normal(70, 30)
if A > GRENSE or B > GRENSE:
if A > B:
A_vinner = A_vinner + 1
else:
B_vinner = B_vinner + 1
if A_vinner > B_vinner:
print("A vinner")
elif B_vinner > A_vinner:
print("B vinner")
else:
print("Uavgjort")
Øystein har også skissert tetthetsfunksjonen til normalfordelingene A og B fra programmet. Se figuren nedenfor.

- Forklar kort hva programkoden gjør.
Det er størst sannsynlighet for at programmet skriver ut «B vinner». Øystein ønsker å endre programkoden slik at denne sannsynligheten blir enda større.
- Forklar hvordan Øystein kan endre på verdien i variabelen SIMULERINGER i linje 4, for å øke sannsynligheten for at programmet skriver ut «B vinner».
- Forklar hvordan Øystein kan endre på verdien i variabelen GRENSE i linje 5 for å øke sannsynligheten for at programmet skriver ut «B vinner».
a)
b) Øk variabelen
c) Øk variabelen
a
Øystein gjør 100 simuleringer av et spill med to spillere: A og B. Dersom A vinner flere ganger enn B i løpet av de 100 spillene så blir A utropt som totalvinner. Dersom B vinner flest ganger blir denne utropt som totalvinner. Ellers blir kampen uavgjort.
I hvert av de 100 spillene så blir A og B tilordnet en verdi fra normalfordelinger, henholdsvis en fordeling med \(\mu=80\) og \(\sigma=20\) for A og en fordeling med \(\mu =70\) og \(\sigma=30\) for B.
For at en spiller skal vinne et av de 100 delspillene så må minst en av dem ha trukket en verdi over 110. Dersom en spiller trekker en verdi over 110 så vil den spilleren med høyest verdi bli kåret som vinner av delspillet.
b
Øystein må øke SIMULERINGER.
Per delspill (der minst én av A og B kommer over grensen) er det litt mer sannsynlig at B vinner enn A. Vi ser det på figuren: arealet under grafen til B for \(x>110\) er større enn arealet under grafen til A. Det skyldes at B har større standardavvik (\(\sigma_B = 30\) mot \(\sigma_A = 20\)), så B sin fordeling brer seg mer utover og har en tyngre hale.
Med få simuleringer (som 100) dominerer tilfeldighet – A kan tilfeldigvis vinne flere ganger enn B selv om B har høyere sannsynlighet per delspill. Med mange simuleringer vil andelen B-seire nærme seg den sanne sannsynligheten (loven om store tall), og det blir tilsvarende mer sikkert at programmet skriver ut «B vinner».
c
Øystein må øke GRENSE.
Når grensen heves, blir både \(P(A > \text{grense})\) og \(P(B > \text{grense})\) mindre, men sannsynligheten for at A overskrider faller raskere enn for B. Grunnen er igjen at A har mindre standardavvik (\(\sigma_A = 20 < \sigma_B = 30\)): A sin fordeling er smalere og mer konsentrert rundt forventningsverdien, så A kommer sjeldnere langt ut i halen sammenlignet med B.
Forholdet mellom haleareal til B og haleareal til A blir altså enda mer i B sin favør jo høyere grensen settes, og det blir tilsvarende mer sannsynlig at programmet skriver «B vinner».