Pchełki Python: plotka w totka

Natrafiłem gdzieś niedawno na informację, że w jednym z krajów w Afryce podobno doszło do przekrętu, bo w loterii padły liczby 5, 6, 7, 8, 9, 10.

Pomyślałem sobie, jakie jest prawdopodobieństwo wylosowania pięciu sąsiednich liczb spośród… no właśnie, spośród ilu? Przyjąłem roboczo, że spośród 49.

Pierwszą liczbę możemy wybrać na 49 sposobów. Drugą na 48, trzecią na 47 i tak dalej, aż do szóstej. Razem około dziesięciu miliardów kombinacji:

44 * 45 * 46 * 47 * 48 * 49 = 10 068 347 520

Ile spośród nich składa się z sześciu sąsiadujących liczb?

Sąsiadujące liczby ustawione w kolejności od najmniejszej do największej można uzyskać na 44 sposoby: począwszy od (1,2,3,4,5,6) aż do (44,45,46,47,48,49).

Każdy z tych 44 sposobów ma dodatkowo 6! = 720 permutacji (przestawień). A więc łącznie mamy 44 * 720 = 31 680 układów liczb sąsiadujących ze sobą. Szansa trafienia na jeden z nich wynosi:

31 680 / 10 068 347 520 = 0.000000314649449

Mniej więcej trzy dziesięciomilionowe. Jeżeli zagramy w totka dziesięć milionów razy, natrafimy na układ sześciu kolejnych liczb mniej więcej trzy razy.

Jak długo trzeba grać, żeby trafić chociaż raz?

Oczywiście, nie wiadomo. Szansa za każdym razem jest taka sama: około trzy na dziesięć milionów. Wiadomo jednak, że przy odpowiednio długim graniu prędzej czy później trafimy na jeden z tych 31680 układów.

Ile to jest “odpowiednio długo”?

Nie da się uzyskać gwarancji, że po N próbach trafimy. Ale można spróbować policzyć ile tych prób powinno być, żeby szansa trafienia była, dajmy na to, 99%. Jak to zrobić? Jeżeli szansa nie trafienia w jednej próbie wynosi (1 – 31680/10068347520) czyli około 0.99999685350550951185, to przy dwóch próbach będzie to (1 – 31680/10068347520)2 czyli około 0.99999370702091945128. Różnica niewielka. Ale nie wolno nie doceniać potęgowania: przy odpowiednio dużej liczbie prób uzyskamy wreszcie prawdopodobieństwo nie trafienia mniejsze niż 0.01.

Metodą prób i błędów (chociaż pewnie dałoby się prościej, logarytmem) sprawdziłem, że:

(1 – 31680/10068347520)1463586 = 0.009999976555193245

natomiast

(1 – 31680/10068347520)1463585 = 0.010000008020163384

Tak więc grając 1463586 razy mamy 99% szans na to, że gdzieś tam trafimy pięć sąsiednich liczb.

Na koniec spróbujemy sobie to zasymulować w Pythonie:

from random import sample
data = [x for x in range(1, 50)]
while 1 == 1:
    c = 0
    minr = 48
    while minr > 5:
        c += 1
        s = sample(data, 6)
        mr = max(s) - min(s)
        if mr < minr:
            minr = mr
    print(c, end=" ")

Uruchomienie powyższego kodu na kilkanaście godzin (ponad 32000 wykonań dużej pętli) dało mi na wyjściu trochę liczb, podstawowe statystyki:

  • W ekstremalnych przypadkach udało się uzyskać trafienie po 35 losowaniach (minimum) oraz po 3 999 695 losowaniach (maksimum).
  • Średnio trafienie następowało po 318K losowań
  • Mediana w okolicy 221K losowań

Wnioskuję stąd, że gdyby w owym afrykańskim kraju loteria odbywałaby się codziennie, to trzeba by czekać na uzyskanie takiego wyniku gdzieś między 650 a 1000 lat. Zakładając rzecz jasna, że losujemy spośród 49 liczb, a nie, dajmy na to, 20 albo 100.

Wniosek?

Brak 😉 Może był tam jakiś przekręt, może nie… Z prawdopodobieństwem tak już jest.

Zapisz się
Powiadom o
guest
2 komentarzy
Inline Feedbacks
Zobacz wszystkie komentarze
2
0
Zapraszam do skomentowania wpisu.x
()
x