Lotto w Pythonie

Losowaniu Lotto (dawniej Dużemu Lotkowi) towarzyszą emocje związane z wysokimi nagrodami. Wystarczy poprawnie wytypować 6 liczb z 49, a można stać się milionerem. Szansa na szybkie wzbogacenie się kusi wielu..

Losowania są w naszym kraju obecne już od 1957 roku i w tym czasie wylosowano 6168 „szóstek”. Najwyższą wygraną była kwota wynosząca ponad 36 000 000 zł. Czytając to, można się zacząć przekonywać do tego, że gra w Totka się po pewnym czasie powinna opłacić. W tym artykule postaramy się rozstrzygnąć ten problem, korzystając z mocy obliczeniowej i skryptu w Pythonie.

Testowanie szczęścia

Grę w Lotto da się łatwo zaprogramować. Stworzony poniżej skrypt jest w stanie zasymulować dowolną liczbę losowań i przeanalizować je pod kątem zdobytych w nich wygranych. Program wypisze wszystkie wyniki losowań, a następnie poda, ile trafiliśmy szóstek, piątek, czwórek i trójek. Pod tymi danymi ukaże się również informacja, ile zainwestowaliśmy w zakup wszystkich zakładów, ile łącznie wygraliśmy pieniędzy i na koniec – jaki jest nasz bilans zysków i strat.

Kod w Pythonie

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import random

def wygrane(szostka, lista):
  wynik = 0
  for i in lista:
    if i in szostka:
      wynik += 1
  return wynik

random.seed()

#Do samodzielnego uzupełnienia-------------------
liczby = [6, 10, 12, 22, 36, 49] #Tu wpisujemy prognozowaną szóstkę
n = 100000 #Liczba losowań
kupon = 3 #Cena jednego zakładu
trojka = 24 #Wygrana za trojke
czworka = 188 #Wygrana za czworke
piatka = 7000 #Wygrana za piatke
szostka = 5000000 #Wygrana za szostke
#----------------------------

wins = {0: 0,
  1: 0,
  2: 0,
  3: 0,
  4: 0,
  5: 0,
  6: 0}

for i in range(n):
  losowanie = sorted(random.sample(range(1, 50), 6))
  wyniki = wygrane(liczby, losowanie)
  print("Wylosowano liczby {}. Trafiłeś {}".format(losowanie, wyniki))
  wins[wyniki] += 1

inwest = n * kupon
wygrana = wins[3]*trojka + wins[4]*czworka + wins[5]*piatka + wins[6]*szostka

print("*"*30)
print("Podsumowanie")
print("Zera: {} \n"
  "Jedynki: {} \n"
  "Dwójki: {}\n"
  "Trójki: {}\n"
  "Czwórki: {}\n"
  "Piątki: {}\n"
  "Szóstki: {}".format(wins[0], wins[1], wins[2], wins[3], wins[4], wins[5], wins[6]))
print("*"*30)
print("Zainwestowałeś {} złotych, "
  "a wygrałeś {} złotych. "
  "Twój bilans to {} zł.".format(inwest, wygrana, wygrana - inwest))

W skrypcie znajduje się fragment opisany jako #Do samodzielnego uzupełnienia. Warto pozmieniać dane tam zawarte i obserwować, co dzieje się z wynikami. Można zmieniać typowaną szóstkę, liczbę losowań, cenę kuponu, czy choćby wartości wygranych za każdą liczbę trafionych kul.

Wnioski z losowań

Poniżej zostaje zaprezentowany przykładowy wynik 100 000 losowań. By dać ogląd na sytuację, to gdyby trzy razy w tygodniu – we wtorek, w czwartek i w sobotę skreślać po sześć zakładów, to taka liczba losowań zajęłaby 106 lat. Tu będą to 3 minuty.

Z powyższej grafiki widać, że zainwestowanie tak dużej sumy pieniędzy na zakup 100 000 zakładów nie opłaciło się – stracono na losowaniach 232 468 złotych. Oczywiście wystarczyłoby trafić jedną szóstkę i sytuacja by się diametralnie zmieniła. Tu jednak nie było na tyle szczęścia i z wyższych wygranych, trafiono tylko jedną piątkę.

Czy się opłaca?

Na pytanie postawione w nagłówku artykułu nie da się jednoznacznie odpowiedzieć. Prawdopodobieństwo wygrania szóstki jest minimalne i wypada powiedzieć, że gra w Lotto będzie generowała wyłącznie straty. Jednak, każde losowanie zawsze zwróci nam jedną szóstkę, która właśnie może być tą naszą. Dlatego trzeba być też świadomym faktu, iż każdy kto w trafił szóstkę w życiu nie powie, że nie opłacało mu się grać.