Game of Thirteen
Ein berühmter französischer Mathematiker, Pierre Raymond De Montmart, bekannt für seine Arbeiten in der Kombinatorik, schlug ein einfaches Spiel namens Game of Thirteen vor. Du hast ein Deck mit 13 Karten, nummeriert von 1 bis 13. Mische das Deck und ziehe die Karten nacheinander. Eine Übereinstimmung liegt vor, wenn die Zahl auf der Karte mit der Position übereinstimmt, an der sie gezogen wird. Wenn also die 5. gezogene Karte eine 5 ist, ist das eine Übereinstimmung. Du gewinnst, wenn du alle Karten ohne eine einzige Übereinstimmung durchgehst. Lass uns die Gewinnwahrscheinlichkeit für dieses Spiel mithilfe einer Simulation berechnen.
Mit dieser Übung stärkst du weiter deine Fähigkeit, abstrakte Probleme in ein Simulationsframework zu übertragen, um Wahrscheinlichkeiten zu schätzen.
Diese Übung ist Teil des Kurses
<Kurs>Statistische Simulation in Python</Kurs>Übungsanweisungen
- Ziehe bei jeder Runde alle Karten aus
deckohne Zurücklegen und weise siedrawzu. - Prüfe, ob es Übereinstimmungen im Ziehungsergebnis gibt, und erhöhe in diesem Fall den Zähler
coincidencesum 1. - Berechne die Gewinnwahrscheinlichkeit als den Anteil der Spiele ohne Übereinstimmungen und verwende
prob_of_winning, um dein Ergebnis auszugeben.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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(____))