Hra třinácti
Slavný francouzský matematik Pierre Raymond De Montmort, známý svou prací v oblasti kombinatoriky, navrhl jednoduchou hru zvanou Hra třinácti. Máš balíček 13 karet, každá je očíslovaná od 1 do 13. Balíček zamíchej a taš karty jednu po druhé. Shoda nastane tehdy, když číslo na kartě odpovídá pořadí, v němž byla karta tažena. Například pokud je 5. tažená karta číslo 5, jde o shodu. Hru vyhraješ, pokud projdeš celým balíčkem bez jediné shody. Pomocí simulace spočítáme pravděpodobnost výhry v této hře.
Tímto cvičením si dále prohloubíš schopnost převádět abstraktní problémy do simulačního rámce pro odhadování pravděpodobností.
Toto cvičení je součástí kurzu
Statistické simulace v Pythonu
Pokyny k cvičení
- Při každém tahu vytáhni všechny karty z
deckbez vracení a výsledek ulož dodraw. - Zkontroluj, zda se v tahu vyskytly nějaké shody, a pokud ano, zvyš počítadlo
coincidenceso 1. - Vypočítej pravděpodobnost výhry jako podíl her bez jakýchkoli shod a výsledek vypiš pomocí
prob_of_winning.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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(____))