Trettonspelet
Den franske matematikern Pierre Raymond De Montmort, känd för sitt arbete inom kombinatorik, skapade ett enkelt spel kallat trettonspelet. Du har en kortlek med 13 kort, numrerade från 1 till 13. Blanda leken och dra ett kort i taget. Ett sammanträffande inträffar när kortets nummer stämmer överens med den ordning kortet drogs – om det femte kortet du drar råkar vara en 5 är det alltså ett sammanträffande. Du vinner om du tar dig igenom hela leken utan några sammanträffanden. Vi beräknar sannolikheten att vinna med hjälp av simulering.
Genom att slutföra den här övningen stärker du din förmåga att omvandla abstrakta problem till ett simuleringsramverk för att uppskatta sannolikheter.
Den här övningen är en del av kursen
Statistisk simulering i Python
Övningsinstruktioner
- Dra alla kort i
deckutan återläggning för varje dragning och tilldela resultatet tilldraw. - Kontrollera om det finns några sammanträffanden i dragningen och öka i så fall räknaren
coincidencesmed 1. - Beräkna vinstannolikheten som andelen omgångar utan några sammanträffanden och använd
prob_of_winningför att skriva ut resultatet.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Pre-set constant variables
deck, sims, coincidences = np.arange(1, 14), 10000, 0
for _ in range(sims):
# Draw all the cards without replacement to simulate one game
draw = np.random.choice(____, size=____, replace=____)
# Check if there are any coincidences
coincidence = (draw == list(np.arange(1, 14))).any()
if coincidence == ____:
coincidences += 1
# Calculate probability of winning
prob_of_winning = ____
print("Probability of winning = {}".format(____))