WPROWADZENIE

Lotto to polska loteria, która polega na tym, że:

  • kupujemy los za 3 zł, na którym skreślamy 6 z 49 liczb (wyboru liczb możemy dokonać również automatycznie – metodą chybił-trafił)
  • podczas oficjalnego losowania transmitowanego w telewizji na żywo losowanych jest również 6 liczb z 49,
  • stopień wygranej zależy od ilości trafionych przez nas liczb:
    • 0 trafień – przegrana,
    • 1 trafienie – przegrana,
    • 2 trafienia – przegrana,
    • 3 trafienia – wygrana stała, np 25 zł,
    • 4 trafienia – wygrana zależna od ilości innych wygranych w losowaniu – około kilkaset złotych,
    • 5 trafień – wygrana zależna od ilości innych wygranych w losowaniu – około kilka tysięcy złotych,
    • 6 trafień – wygrana zależna od ilości innych wygranych w losowaniu – najniższa gwarantowana kwota do podziału to 2 mln złotych,

Prawdopodobieństwo wygranej obliczamy używając kombinacji, które pozwalają nam określić liczbę k-elementowych podzbiorów  w n-elementowym zbiorze.

$C_{n}^{k}= \begin{pmatrix}
n\\
k
\end{pmatrix} $

Liczba 6-elementowych podzbiorów z 49-elementowego zbioru to:

$C_{49}^{6}=
\begin{pmatrix}
49\
6
\end{pmatrix}=\frac{49!}{(49-6)! \cdot 6!} \frac{49\cdot 48\cdot 47\cdot 46\cdot 45\cdot 44\cdot 43!}{43! \cdot 6\cdot 5\cdot 4\cdot 3\cdot 2}=13983816$

To oznacza, że prawdopodobieństwo wylosowania “szóstki” wynosi:

$\frac{1}{13 983 816} \approx 7,15 \cdot 10^8 \approx 0.000006%$

Wykonaj symulację losowań Lotto.

  • podaj po kolei sześć liczb od 1 do 49,
  • zdecyduj, ile symulacji losowań wykonać.

KOD W JĘZYKU PYTHON

import random

# pobranie liczb użytkownika
uzytkownik = []
numery = ["pierwszą", "drugą", "trzecią", "czwartą", "piątą", "szóstą"]
for i in range(6):
    while True:
        liczba = int(input(f"Podaj {numery[i]} liczbę z zakresu 1-49: "))
        if 1 <= liczba <= 49:
            if liczba in uzytkownik:
                print(" >>> Ta liczba została już podana, podaj inną.")
            else:
                uzytkownik.append(liczba)
                break
        else:
            print(" >>> Nieprawidłowa liczba, podaj inną.")

# pobranie liczby losowań
liczba_losowan = int(input("Ile losowań chcesz wykonać? "))

# przeprowadzenie losowań i sprawdzenie trafień
trafienia = {3: 0, 4: 0, 5: 0, 6: 0}
for _ in range(liczba_losowan):
    losowe = set(random.sample(range(1, 50), 6))
    trafionych = len(set(uzytkownik) & losowe)
    if trafionych in trafienia:
        trafienia[trafionych] += 1

# wyświetlenie wyników
for k, v in trafienia.items():
    slowo = "trafienia" if k != 1 else "trafienie"
    print(f"Liczba {slowo} {k}: {v}")

⬆️⬆️⬆️ Zobacz w Google Colaboratory


JAK DZIAŁA PROGRAM?

  1. Importujemy bibliotekę random, która umożliwia nam losowanie liczb.
  2. Tworzymy pustą listę użytkownika, która będzie przechowywała liczby podane przez użytkownika. 
  3. Pętla for pobiera 6 liczb od użytkownika i sprawdza, czy każda z nich jest liczbą całkowitą z przedziału od 1 do 49, a następnie dodaje ją do listy użytkownika. Jeśli liczba jest nieprawidłowa lub została już podana, program wypisuje odpowiedni komunikat i pyta ponownie.
  4. Następnie użytkownik podaje liczbę losowań, jaką chce przeprowadzić. pisuje „trafienie” zamiast „trafienia”.
  5. Program tworzy słownik trafienia z kluczami od 3 do 6, które reprezentują liczbę trafionych liczb. Każde losowanie składa się z wygenerowania 6 losowych liczb z przedziału od 1 do 49, porównania ich z liczbami podanymi przez użytkownika i zliczenia trafień. W przypadku trafienia od 3 do 6 liczb, program zwiększa wartość odpowiedniego klucza w słowniku trafienia o 1.
  6. Program wyświetla ilość trafień dla trójek, czwórek, piątek i szóstek. W przypadku, gdy liczba trafień jest równa 1,  program wypisuje “trafiona” a nie “trafionych”.