WPROWADZENIE

Grupa 20 uczni贸w pewnej postanowi艂a zrobi膰 sobie prezent na Miko艂ajki. Ka偶da osoba napisa艂a na kartce swoje imi臋 (unikalne), wszystkie kartki zosta艂y umieszczone w pude艂ku, po czym ka偶dy kolejno losowa艂 jedn膮 kartk臋. 

Jakie jest prawdopodobie艅stwo, 偶e podczas losowania prezent贸w przynajmniej jedna osoba wylosuje siebie?

Problem ten rozwi膮zuje si臋 z wykorzystaniem podsilni – liczbie takich permutacji aby 偶aden element nie sta艂 na swoim pierwotnym miejscu.

Silni臋 oznaczamy wykrzyknikiem, np $5!= 5\cdot 4\cdot 3\cdot 2\cdot 1$. Podsilni臋 te偶 oznaczamy wykrzyknikiem, ale stawiamy go przed liczb膮, np $!5$.

Zatem:

Dla 20 os贸b prawdopodobie艅stwo, 偶e nikt nie wylosuje siebie to:

$P(A) = \frac{!20}{20!} \approx 36\%$

Czyli prawdopodobie艅stwo, 偶e przynajmniej jedna osoba wylosuje siebie to:

$P(A’) = 1-\frac{!20}{20!} \approx 64\%$

Zobacz przyk艂ad podsilni w arkuszu kalkulacyjnym: Podsilnia

WI臋cej o omawianym problemie przeczytasz:


KOD W J臉ZYKU PYTHON

import random

n = 16
num_trials = 100
count = 0
for i in range(num_trials):
    students = list(range(1, n + 1))
    random.shuffle(students)
    for j in range(n):
        if students[j] == j + 1:
            print(f'Pr贸ba {i+1}, osoba {j+1} wylosowa艂a samego siebie')
            count += 1
            break
print(f'\nW {count} z {num_trials} pr贸b, 偶e kto艣 wylosowa艂 samego siebie.')

猬嗭笍猬嗭笍猬嗭笍 Zobacz w Google Colaboratory


JAK DZIA艁A PROGRAM?

  1. Zaczynamy od importu biblioteki random
  2. Ustalamy sta艂膮 liczb臋 uczni贸w w klasie na 20
  3. Ustalamy liczb臋 pr贸b symulacji na 100
  4. W p臋tli for (dla ka偶dej pr贸by) program tworzy list臋 uczni贸w za pomoc膮 funkcji range i list() oraz tasuje j膮 za pomoc膮 funkcji shuffle().
  5. W drugiej p臋tli for (dla ka偶dego ucznia) program sprawdza, czy numer wylosowany dla danego ucznia odpowiada jego w艂asnemu numerowi, a nast臋pnie wypisuje informacj臋, 偶e taka sytuacja wyst膮pi艂a.
  6. W przypadku znalezienia trafienia, program zwi臋ksza warto艣膰 zmiennej count (liczba trafie艅) i przerywa p臋tl臋, aby nie sprawdza膰 dalszych uczni贸w. Nie interesuje nas ju偶, czy inny ucze艅 te偶 siebie wylosuje oraz przyspiesza dzia艂anie ca艂ego programu.
  7. Na ko艅cu program wypisuje informacj臋 o liczbie trafie艅 w stosunku do liczby pr贸b.