Tidningen Hufvudstadsbladet här i Helsingfors har en liten problemhörna med namnet Tankenöten. Bloggaren brukar besvara nötterna nu och då. Den senaste nöten var relativt enkel att besvara, men den gav en liten möjlighet att skriva en programsnutt. Frågan var kort och gott:
Anta att du singlar tre slantar på en gång. Hur många av de möjliga utfallen är sådana att man får (exakt) två klave.
Eftersom bloggaren noterat att läsare i Sverige ibland figurerar i bloggen, döptes problemet till ”Tre kronor” (jag vet, fysikerhumor!).
Vi beräknar alltså sannolikheten för exakt två kronor i en slantsingling med tre slantar. Problemet i sig är inte svårt. Utfallsrummet (R – krona och L – klave) är:
RRR, RLR, RRL, RLL
LLL, LRL, LLR, LRR
Vi har alltså 8 möjliga utfall och exakt två kronor i tre av dem (kunde förklara namnet på inlägget??)
Sannolikheten för exakt 2 kronor bland de tre slantarna borde alltså vara 3/8 eller ca 0,375.
Passade på at simulera detta med ett litet program. Måste också skryta en aning. För första gången under min över 30-åriga lärarkarriär, lyckades programmeringen utan ett enda felmeddelande på vägen. Rent otroligt!
Programmet hittas i Box-verktyget. Får fritt laddas ner och modifieras av den som vill!
Här är en programlistning med enkla förklaringar:
Define trekronor()= Programmet namnges
Prgm
{0,0,0,0}→kronor En räknelista skapas för utfallen 0, 1, 2 eller 3 kr
Request ”Antal kast”,n Antalet singlingar definieras
For i,1,n :{0,0,0}→kast Loop för kasten
For j,1,3 De tre slantarna singlas i en loop
If rand()>0.5 Then : Ett slumptal i int. 0-1 ges. Större än 0,5: Kr
kast[j]:=1 Eventuell krona noteras
EndIf Slut på kontrollen
sum(kast)→s Antalet kronor noteras
EndFor Slut på slantsinglingsloopen
kronor[s+1]+1→kronor[s+1] Räknelistan uppdateras
EndFor Slut på simuleringen
EndPrgm
När programmet körts, visas resultatet genom kommandot kronor. Kommandot kan givetvis skrivas in i programmet. Också de relativa antalet ”exakt 2 kronor” kan skrivas in! Prova!