d) Lag eit program som simulerer kast med to slike tetraeder og få programmet til å rekne ut gjennomsnittet, variansen og standardavviket. Samanlikn med svara du rekna ut i c).
Løysing
Her er to ulike måtar å skrive programmet på. Kanskje har du eit tredje alternativ som verkar minst like godt?
python
1import numpy as np
23rng = np.random.default_rng()45N =1000006X = np.zeros(N)#ein array for resultata av kast7V = np.zeros(N)#ein array for kvadratavvika89tetra_1 =(rng.integers(1,5, size = N))#kastar den eine terningen tilfeldig10tetra_2 =(rng.integers(1,5, size = N))#kastar den andre terningen tilfeldig1112for i inrange(N):#finn produkta av dei to terningane i kvart kast13 X[i]= tetra_1[i]*tetra_2[i]1415snitt =sum(X)/N #finn gjennomsnittsverdien1617for i inrange(N):#reknar ut kvadratavviket i kvart tilfelle18 V[i]=(snitt-X[i])**21920varians =sum(V)/N #finn variansen21avvik = np.sqrt(varians)#reknar ut kvadratavviket2223print(f"Gjennomsnittet er {snitt:.2f}, variansen er {varians:.1f}, og standardavviket er {avvik:.1f}.")
python
1import numpy as np
23N =1000004U =[1,2,2,3,3,4,4,4,6,6,8,8,9,12,12,16]#listar opp alle dei moglege utfalla i rett tal5X = np.zeros(N)#ein array for resultata av kast6V = np.zeros(N)#ein array for kvadratavvika78for i inrange(N):9 X[i]= np.random.choice(U)#vel tilfeldig eit utfall frå utfallsrommet og legg det i arrayen1011snitt =sum(X)/N #finn gjennomsnittet1213for i inrange(N):#reknar ut kvadratavviket i kvart tilfelle14 V[i]=(snitt-X[i])**21516varians =sum(V)/N #finn variansen17avvik = np.sqrt(varians)#reknar ut kvadratavviket1819print(f"Gjennomsnittet er {snitt:.2f}, variansen er {varians:.1f}, og standardavviket er {avvik:.1f}.")
Når vi køyrer desse programma mange gonger, ser vi at svara varierer veldig lite. Vi kan få dei til å variere endå mindre ved å køyre simuleringa fleire gonger, det vil seie ved å gjere N større.
4.1.23
Sannsynsfordelinga til ein stokastisk variabel X er gitt ved
Sannsynsfordeling
x
1
2
3
4
P(X=x)
0,40
a
0,20
0,10
a) Bestem a.
Løysing
Vi har at summen i ei sannsynsfordeling alltid skal vere lik 1:
To maskiner, A og B, pakkar lakrispastillar i esker. Talet på pastillar i eska varierer litt. La X vere talet på pastillar i eskene til pakkemaskin A og Y vere talet på pastillar i eskene til pakkemaskin B.
Sannsynsfordelingane til X og Y er gitt nedanfor.
Maskin A:
maskin a
x
28
29
30
31
32
PX=x
110
14
12
110
120
Maskin B:
maskin b
y
28
29
30
31
32
PY=y
225
320
35
320
150
a) Finn forventningsverdi, varians og standardavvik til X og Y.
b) Kva maskin produserer esker med minst spreiing i talet på pastillar?
Løysing
Standardavviket til Y er mindre enn standardavviket til X. Det betyr at maskin B produserer pastillesker med minst spreiing i talet på pastillar.
c) Lag eit program som lar brukaren oppgi sannsynsfordeling, og som så reknar ut forventningsverdi, varians og standardavvik. Test programmet ved å køyre det på maskin A og B.
Løysing
Forslag til program:
python
1import numpy as np
23X =input("Oppgi dei moglege verdiane X kan ha. Skil mellom verdiane med komma.")4p_x =input("Oppgi dei tilhøyrande sannsyna. Skil med komma.")56X = X.split(",")7for i inrange(len(X)):8 X[i]=float(X[i])9X = np.array(X)1011p_x = p_x.split(",")12for i inrange(len(p_x)):13 p_x[i]=float(p_x[i])14p_x = np.array(p_x)1516e =sum(X*p_x)17v =sum((X-e)**2*p_x)1819print(f"Forventningsverdien blir {e:.2f}.")20print(f"Variansen blir {v:.2f}.")21print(f"Standardavviket blir {np.sqrt(v):.2f}.")
I linjene 3 og 4 hentar vi dataa frå brukaren.
Linjene 6 og 11: Vi splittar opp informasjonen frå brukaren og legg tala i ei liste.
Linjene 7–8 og 12–13: Vi gjer om elementa til tal.
Linjene 9 og 14: Vi transformerer til array slik at vi får moglegheit til å rekne med elementa.
Linje 16: Vi finn forventningsverdien.
Linje 17: Vi finn variansen.
Linjene 19–21: Vi skriv ut dei tre verdiane.
Legg merke til at du må oppgi sannsyna som desimaltal (med punktum som desimalskiljeteikn), og ikkje som brøk.