WPROWADZENIE
Czy kiedykolwiek zastanawiałeś się, jakie jest prawdopodobieństwo, że w Twojej klasie, grupie znajomych lub zespole w pracy przynajmniej dwie osoby obchodzą urodziny tego samego dnia? Większość ludzi szacuje, że potrzeba do tego bardzo dużej grupy, być może blisko 183 osób (połowa dni w roku). Jednak rzeczywistość jest znacznie bardziej zaskakująca!
Wystarczą zaledwie 23 osoby, aby prawdopodobieństwo, że co najmniej dwie z nich mają urodziny tego samego dnia, przekroczyło 50%. Przy 57 osobach prawdopodobieństwo to wynosi już ponad 99%! To zjawisko, znane jako paradoks urodzin, nie jest paradoksem w sensie logicznej sprzeczności, ale raczej wynikiem, który jest sprzeczny z naszą intuicją.
Dlaczego nasza intuicja zawodzi?
Nasza intuicja często podpowiada nam, aby myśleć o problemie z perspektywy jednej osoby: „Jakie jest prawdopodobieństwo, że ktoś ma urodziny tego samego dnia co ja?”. W takim przypadku prawdopodobieństwo jest rzeczywiście niskie dla małych grup.
Jednak paradoks urodzin pyta o coś innego: „Jakie jest prawdopodobieństwo, że jakiekolwiek dwie osoby w grupie mają urodziny tego samego dnia?”. Kluczowa różnica polega na liczbie możliwych par osób. W grupie liczącej n osób, liczba możliwych par wynosi $$\frac{n(n−1)}{2}$$
- Dla 2 osób jest 1 para.
- Dla 3 osób są 3 pary.
- Dla 10 osób jest 45 par.
- Dla 23 osób jest już $$\frac{23×22}{2}=253 ~ pary!$$
Każda z tych par ma szansę podzielić ten sam dzień urodzin. Im więcej par, tym większa szansa na „trafienie”.
Jak obliczyć prawdopodobieństwo?
Bezpośrednie obliczanie prawdopodobieństwa, że co najmniej dwie osoby mają te same urodziny, jest skomplikowane, ponieważ musielibyśmy uwzględnić przypadki, gdy dokładnie dwie osoby dzielą urodziny, dokładnie trzy, dwie pary itd.
Znacznie łatwiej jest obliczyć prawdopodobieństwo zdarzenia przeciwnego: że żadne dwie osoby w grupie nie mają urodzin tego samego dnia. Następnie odejmiemy to prawdopodobieństwo od 1 (czyli 100%), aby uzyskać szukane prawdopodobieństwo.
Załóżmy dla uproszczenia, że rok ma 365 dni (ignorujemy lata przestępne) i że urodziny są równomiernie rozłożone w ciągu roku.
- Pierwsza osoba może mieć urodziny dowolnego dnia, prawdopodobieństwo: $$\frac{365}{365}$$
- Druga osoba, aby mieć inne urodziny niż pierwsza, musi urodzić się w jednym z pozostałych 364 dni, prawdopodobieństwo: $$\frac{364}{365}$$
- Trzecia osoba, aby mieć inne urodziny niż pierwsze dwie, musi urodzić się w jednym z pozostałych 363 dni, prawdopodobieństwo: $$\frac{363}{365}$$
- …i tak dalej, aż do n-tej osoby, która musi mieć urodziny w jednym z 365−(n−1) pozostałych dni, prawdopodobieństwo: $$\frac{365-n+1}{365}$$
Aby obliczyć prawdopodobieństwo (P(brak wspólnych urodzin)), że wszystkie te zdarzenia zaszły (czyli nikt nie dzieli urodzin), mnożymy te prawdopodobieństwa:
P(brak wspólnych urodzin): $$\frac{365}{365} \times \frac{364}{365} \times \frac{363}{365}\times … \times \frac{365-n+1}{365}$$
Można to zapisać jako:
P(brak wspólnych urodzin): $$\frac{365!}{(365-n)! \times 365^n}$$
Teraz, prawdopodobieństwo (P(co najmniej jedna para)), że co najmniej dwie osoby mają urodziny tego samego dnia, to:
P(co najmniej jedna para)=1−P(brak wspólnych urodzin)
Oto jak rośnie to prawdopodobieństwo wraz z liczbą osób (n):
- n=10: P≈11.7%
- n=20: P≈41.1%
- n=23: P≈50.7% (Próg 50% przekroczony!)
- n=30: P≈70.6%
- n=50: P≈97.0%
- n=57: P≈99.0%
- n=70: P≈99.9%
Jak widać, prawdopodobieństwo rośnie zaskakująco szybko!
Symulacja paradoksu
Aby zobaczyć paradoks w działaniu, można przeprowadzić symulację komputerową. Proces wyglądałby następująco:
- Wybierz rozmiar grupy (n).
- Wygeneruj losowo n dat urodzin (np. jako liczby od 1 do 365).
- Sprawdź, czy w wygenerowanym zestawie jest jakakolwiek powtórka (czy co najmniej dwie osoby mają ten sam „dzień urodzin”).
- Powtórz kroki 2 i 3 wiele razy (np. 10 000 razy), aby uzyskać wiarygodne statystyki.
- Oblicz odsetek prób, w których wystąpiły wspólne urodziny.
KOD W JĘZYKU PYTHON
import random
def symulacja_paradoksu_urodzin(liczba_osob, liczba_symulacji):
liczba_wspolnych_urodzin = 0
for _ in range(liczba_symulacji):
urodziny = []
for _ in range(liczba_osob):
urodziny.append(random.randint(1, 365))
if len(set(urodziny)) != len(urodziny):
liczba_wspolnych_urodzin += 1
prawdopodobienstwo = liczba_wspolnych_urodzin / liczba_symulacji
return prawdopodobienstwo
liczba_osob = 23
liczba_symulacji = 10000 # Im więcej symulacji, tym dokładniejszy wynik
prawdopodobienstwo = symulacja_paradoksu_urodzin(liczba_osob, liczba_symulacji)
print(f"Dla {liczba_osob} osób i {liczba_symulacji} symulacji:")
print(f"Prawdopodobieństwo wspólnych urodzin: {prawdopodobienstwo:.4f}")
⬆️⬆️⬆️ Zobacz w Google Colaboratory
JAK DZIAŁA PROGRAM?
- Import narzędzi: Program zaczyna od załadowania narzędzia do generowania liczb losowych. To narzędzie będzie wykorzystywane do symulowania urodzin.
- Definiowanie symulacji: Program definiuje „przepis” na przeprowadzenie symulacji paradoksu urodzin. Ten „przepis” (funkcja) przyjmuje dwie informacje: ile osób ma być w grupie i ile razy symulacja ma być powtórzona.
- Przeprowadzanie symulacji:
- Dla każdej symulacji, program tworzy wirtualną grupę osób o określonej wielkości.
- Następnie, dla każdej osoby w grupie, program losuje dzień urodzin (od 1 do 365).
- Program sprawdza, czy w grupie są dwie osoby z tym samym dniem urodzin. Jeśli tak, zapamiętuje to jako „sukces”.
- Obliczanie prawdopodobieństwa: Po przeprowadzeniu wszystkich symulacji, program oblicza prawdopodobieństwo wystąpienia wspólnych urodzin. Dzieli liczbę „sukcesów” (symulacji, w których dwie osoby miały te same urodziny) przez całkowitą liczbę przeprowadzonych symulacji.
- Prezentacja wyniku: Na koniec, program wyświetla obliczone prawdopodobieństwo na ekranie, informując o szansie na wspólne urodziny w grupie o określonej wielkości.
Dodaj komentarz