Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Przy każdym losowaniu dobierz wszystkie karty z deck bez powtórzeń i przypisz wynik do draw.
  • Sprawdź, czy w losowaniu wystąpiły jakiekolwiek zbiegi okoliczności, a jeśli tak – zwiększ licznik coincidences o 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(____))
Edytuj i uruchom kod