Gra w trzynaście
Pierre Raymond De Montmart, słynny francuski matematyk znany z prac w dziedzinie kombinatoryki, zaproponował prostą grę zwaną Grą w trzynaście. Masz talię 13 kart, ponumerowanych od 1 do 13. Przetasuj tę talię i dobieraj karty jedną po drugiej. Zbieg okoliczności zachodzi wtedy, gdy numer na karcie zgadza się z kolejnością, w jakiej ta karta została dobrana. Na przykład, jeśli piąta dobrana karta ma numer 5, to jest właśnie zbieg okoliczności. Wygrywasz grę, jeśli przejdziesz przez wszystkie karty bez żadnego takiego zbiegu. Obliczmy prawdopodobieństwo wygranej w tej grze przy użyciu symulacji.
Wykonując to ćwiczenie, jeszcze bardziej utrwalisz umiejętność przekształcania abstrakcyjnych problemów w ramy symulacji służące do szacowania prawdopodobieństw.
To ćwiczenie jest częścią kursu
Symulacje statystyczne w Pythonie
Instrukcje do ćwiczenia
- Przy każdym losowaniu dobierz wszystkie karty z
deckbez powtórzeń i przypisz wynik dodraw. - Sprawdź, czy w losowaniu wystąpiły jakiekolwiek zbiegi okoliczności, a jeśli tak – zwiększ licznik
coincidenceso 1. - Oblicz prawdopodobieństwo wygranej jako ułamek gier bez żadnych zbiegów okoliczności i użyj zmiennej
prob_of_winning, aby wyświetlić wynik.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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(____))