ITBlog

IT Blog w tematach różnych...

  • O blogu…
  • Edukacja
    • Moodle – stare
    • Moodle2
    • Testy
    • Wykłady IT
  • Firma

Generator LOTTO i różne statystyki

Napisane przez Igor Brzeżek on 15 czerwca 2026
Napisane w: Programowanie.

Contents
  1. Narzędzia do symulacji i analizy losowań liczbowych
  2. lottery.py – generator losowań bez powtórzeń
  3. Opcje wiersza poleceń
  4. Przykłady użycia
  5. lottery_stats.py – analiza statystyczna wyników losowań
  6. Przykłady użycia
  7. lottery_common.py – wyszukiwanie wspólnych liczb w plikach CSV
  8. Tryby działania
  9. Przykłady użycia
  10. lottery_compare.py – porównywanie pojedynczego losowania z zestawami typowań
  11. Zasada działania
  12. Ważniejsze opcje
  13. Przykłady użycia
  14. Podsumowanie

Narzędzia do symulacji i analizy losowań liczbowych

Lottery to zestaw programów napisanych w Pythonie, służących do generowania losowych liczb w stylu gier liczbowych (Lotto, Multi Multi itp.) oraz do analizy statystycznej wyników takich losowań. Projekty dostępne są na GitHubie pod adresem github.com/IgorBrzezek/lottery i obejmują cztery narzędzia: główny generator losowań (lottery.py) oraz trzy programy statystyczne (lottery_stats.py, lottery_common.py, lottery_compare.py).

Do działania generatora z opcją –rndauto wymagany jest dodatkowy plik trandom.py, dostępny w repozytorium github.com/IgorBrzezek/trandom – jest to zaawansowany generator prawdziwie losowych liczb wykorzystujący wiele źródeł entropii.

lottery.py – generator losowań bez powtórzeń

Główny program pakietu. Jego zadaniem jest losowanie określonej liczby liczb z zadanego zakresu, w rundach, bez powtórzeń – aż do wyczerpania puli. Po wyczerpaniu puli następuje uzupełnienie i jedna runda finalowa, po czym program kończy działanie. Mechanizm ten odwzorowuje działanie rzeczywistych gier liczbowych, gdzie każda wylosowana liczba znika z puli w danej turze.

Program obsługuje dwa źródła losowości: domyślny generator Pythona (Mersenne Twister) oraz zewnętrzny silnik trandom.py uruchamiany przełącznikiem –rndauto, który dostarcza losowość opartą na 7 źródłach entropii sprzętowo-systemowej (jitter procesora, timing dysku, adresy pamięci, szeregowanie wątków, timing sieciowy, liczniki wydajności, systemowy CSPRNG). Dodatkowo, za pomocą opcji –mouse, –keyboard i –sensors można wzbogacić losowość o entropię z ruchów myszy, naciśnięć klawiszy lub czujników sprzętowych (temperatura CPU, prędkość wentylatorów itp.).

Opcje wiersza poleceń

Program wymaga trzech obowiązkowych argumentów: -a FROM (początek zakresu), -b TO (koniec zakresu) i -n COUNT (ile liczb losować w jednej rundzie). Do tego dostępny jest bogaty zestaw opcji modyfikujących działanie:

-nn (–noneighbor) – zapobiega występowaniu liczb sąsiadujących (różniących się o 1) w pojedynczym losowaniu.
–minlen N – ustawia minimalną odległość między dowolnymi dwoma wylosowanymi liczbami.
–nei N,M – wymaga wystąpienia dokładnie N ciągów M kolejnych liczb (np. –nei 1,2 oznacza dokładnie jedną parę sąsiadujących liczb).
–series N – powtarza cały proces losowania (wyczerpanie puli) N razy. Między seriami drukowana jest linia separatora.
–fullpool – każde losowanie odbywa się z pełnego zakresu, bez usuwania liczb z puli. Opcja –series określa liczbę losowań (domyślnie 1).
-t N (–threads N) – dzieli pracę na N wątków równoległych (wymaga –series). Każdy wątek ma własny generator PRNG. Nie działa z –rndauto.
–color – włącza kolorowe wyjście ANSI: nowe liczby na biało, powtórki na czerwono.
–colorneighbor – podświetla sąsiadujące liczby na zielono.
–seriesentropy – ponownie zbiera entropię z czujników przy każdej nowej serii (wymaga –rndauto).
–numbering cont|ext – numerowanie rund: cont (ciągłe, domyślne) lub ext (ciągłe/numer serii).
-w FILENAME (–write) – zapisuje wyniki do pliku CSV (jedna runda na linię, przecinki; pusta linia między seriami).
–wcont – przy -w zapisuje CSV bez pustych linii między seriami.
–nodisplay – wycisza wyświetlanie na terminalu (wymaga -w).
–pb (–progressbar) – pokazuje pasek postępu na stderr (wymaga –nodisplay).
-in FILE (–infile) – odczytuje i wyświetla plik CSV utworzony wcześniej przez -w.
–debug – wyświetla w nawiasach kwadratowych pozostałą pulę liczb po każdej rundzie.

Przykłady użycia

Podstawowe losowanie 6 liczb z zakresu 1-49:

python lottery.py -a 1 -b 49 -n 6

Z zapobieganiem sąsiadującym liczbom:

python lottery.py -a 1 -b 49 -n 6 -nn

Z wymogiem dokładnie jednej pary sąsiadujących liczb (np. 5,6):

python lottery.py -a 1 -b 49 -n 6 --nei 1,2

Z minimalną odległością 3 między liczbami:

python lottery.py -a 1 -b 49 -n 6 --minlen 3

Z użyciem trandom.py i entropią z myszy:

python lottery.py -a 1 -b 49 -n 6 --rndauto --mouse

Trzy serie po pełnym cyklu puli:

python lottery.py -a 1 -b 49 -n 6 --series 3

Pięć niezależnych losowań z pełnej puli:

python lottery.py -a 1 -b 49 -n 6 --fullpool --series 5

Równoległe 100 serii na 4 wątkach:

python lottery.py -a 1 -b 49 -n 6 --series 100 --threads 4

Zapis do pliku CSV z kolorami na ekranie:

python lottery.py -a 1 -b 49 -n 6 --color -w wynik.csv --colorneighbor

lottery_stats.py – analiza statystyczna wyników losowań

Program do analizy statystycznej danych z losowań liczbowych, wczytanych z pliku CSV. Oblicza procentowy udział każdej liczby we wszystkich losowaniach i prezentuje wyniki w formie tekstowej lub histogramu poziomego.

Program obsługuje pięć trybów analizy, z których należy wybrać dokładnie jeden:

-num N[,M,…] – statystyka dla jednej lub kilku konkretnych liczb.
–auto – histogram dla wszystkich liczb 1-49.
–mostfreq N – ranking N najczęściej występujących liczb.
–neighbors – wyświetlenie wierszy, w których występują liczby sąsiadujące (podświetlane na zielono).
–neighborstats – statystyka par sąsiadujących liczb (1-2, 2-3, … 48-49), sortowana według wartości pary.

Format CSV (domyślny Lotto): numer losowania, data (DD.MM.RRRR), sześć liczb. Obsługiwany jest również format niestandardowy przez opcję –format cols z podaniem indeksów kolumn (liczonych od 1).

Ważniejsze opcje:

-in FILE – plik wejściowy CSV (wymagany).
-acc N – liczba miejsc po przecinku w procentach (domyślnie 2).
–color – kolorowe wyjście ANSI.
–nosort – oryginalna kolejność liczb (bez sortowania).
–datemin i –datemax – filtrowanie według zakresu dat (tylko w trybie lotto).

Przykłady użycia

Statystyki dla konkretnej liczby:

python lottery_stats.py -in lotto.csv -num 7

Histogram dla wszystkich liczb 1-49:

python lottery_stats.py -in lotto.csv --auto

10 najczęściej występujących liczb:

python lottery_stats.py -in lotto.csv --mostfreq 10

Wyświetlenie wierszy z liczbami sąsiadującymi – tylko od 2000 roku:

python lottery_stats.py -in lotto.csv --neighbors --color --datemin 01.01.2000

Statystyki par sąsiadujących:

python lottery_stats.py -in lotto.csv --neighborstats --color

Pobranie danych z niestandardowego pliku CSV (liczby w kolumnach 3-8):

python lottery_stats.py -in dane.csv --auto --format "cols 3,4,5,6,7,8"

lottery_common.py – wyszukiwanie wspólnych liczb w plikach CSV

Program do analizy danych z losowań, który umożliwia trzy tryby działania: porównywanie dwóch plików CSV w poszukiwaniu wspólnych liczb, wyszukiwanie konkretnych zestawów liczb, oraz analizę częstości występowania kombinacji (par, trójek, czwórek itd.).

Tryby działania

Tryb pierwszy: porównanie dwóch plików (opcja -ina i -inb). Każdy wiersz pliku A jest porównywany z każdym wierszem pliku B. Jeśli mają wspólne liczby, oba wiersze są wyświetlane obok siebie, a wspólne liczby są podświetlane na czerwono (z –color).

Tryb drugi: wyszukiwanie konkretnych liczb (–searchnumbers lub -sn). Można podać listę liczb oddzielonych przecinkami. Opcja –searchm all (domyślnie) wymaga, aby wszystkie podane liczby występowały w wierszu; –searchm one wyświetla wiersze zawierające przynajmniej jedną z podanych liczb.

Tryb trzeci: analiza częstości kombinacji (-sf N, –searchfreq N). Dla zadanej liczby N program znajduje i zlicza wszystkie unikalne kombinacje N liczb występujące w pliku B. Wyniki mogą być sortowane rosnąco (–sort asc) lub malejąco (–sort desc). Opcja –top N ogranicza liczbę wyświetlanych wyników.

Ważniejsze opcje wspólne:

-inb FILE – plik B (wymagany we wszystkich trybach).
–lotto – skrót dla –colsb 3,4,5,6,7,8 (kolumny z liczbami w standardzie Lotto).
–color – kolorowe podświetlanie pasujących liczb na czerwono.
–pause – zatrzymanie po każdej stronie (tylko Windows).
–from i –to – filtrowanie według roku (data w kolumnie 2 pliku B).
-t N – liczba wątków do równoległego przetwarzania (tryb porównania).
-w FILE – zapis wyniku do pliku.

Przykłady użycia

Najczęstsze pary w historii Lotto:

python lottery_common.py -inb lotto2.csv --lotto -sf 2 --sort desc --top 10

Najczęstsze trójki w latach 2020-2026:

python lottery_common.py -inb lotto2.csv --lotto -sf 3 --sort desc --top 10 --from 2020 --to 2026

Wyszukanie wszystkich losowań zawierających liczby 1, 17 i 38:

python lottery_common.py -inb lotto2.csv --lotto --color --searchnumbers 1,17,38 --searchm all

Porównanie dwóch plików z użyciem 4 wątków:

python lottery_common.py -ina wynik1000.csv -colsa 1,2,3 -inb lotto2.csv --lotto -t 4 --color

lottery_compare.py – porównywanie pojedynczego losowania z zestawami typowań

Program porównuje pojedynczy wiersz losowania (plik A) z wieloma wierszami typowań (plik B). Plik B może zawierać wiele zestawów typowań oddzielonych pustymi wierszami. Program wyświetla, które typy trafiły określoną liczbę liczb, z kolorowym oznaczeniem liczby trafień.

Zasada działania

Plik A zawiera jedno lub więcej losowań. Za pomocą –seta (domyślnie 1) wybiera się, który wiersz ma być wzorcem. Plik B zawiera wiersze typowań; pierwsza kolumna to identyfikator typowania, pozostałe to liczby. Puste wiersze oddzielają zestawy (sety). Opcja –setb wybiera zestawy do porównania – może to być lista numerów lub „all”.

Wynik porównania: obok siebie wyświetlane są liczby z losowania i liczby z typowania. Liczby zgodne z losowaniem są kolorowane. Liczba trafień ma odrębny kolor: 0 – szary, 1 – jasnobiały, 2 – żółty, 3 – zielony, 4 – cyjan, 5 – czerwony, 6 – niebieski.

Opcja –stat włącza statystyki trafień dla każdego zestawu. Jeśli porównujemy wiele zestawów, na końcu wyświetlane jest podsumowanie łączne dla wszystkich zestawów (Overall Hits).

Ważniejsze opcje

–seta N – wybór wiersza z pliku A do analizy (liczone od 1).
–setb all – porównanie ze wszystkimi zestawami z pliku B.
–stat – statystyki trafień dla każdego zestawu.
–mono – wyjście ASCII bez kolorów ANSI.
–rownumbers – wyświetlanie identyfikatorów typowań.
–summaryonly – pokazuje tylko łączne podsumowanie trafień.
–showdata – wyświetla pełne wiersze danych z pliku B z numerami linii.
–colsa i –colsb – wybór kolumn do dopasowywania z plików A i B.
–displcolsa i –displaycolsb – wybór kolumn do wyświetlania (nie wpływa na dopasowywanie).

Przykłady użycia

Podstawowe porównanie losowania z pierwszym zestawem typowań:

python lottery_compare.py -a lotto.csv -b moje.csv

Porównanie ze wszystkimi zestawami i statystykami:

python lottery_compare.py -a lotto.csv -b moje.csv --setb all --stat

Same łączne podsumowanie trafień (bez wyświetlania poszczególnych zestawów):

python lottery_compare.py -a lotto.csv -b moje.csv --setb all --summaryonly

Porównanie z użyciem określonych kolumn w obu plikach (kolumny 3-8 z A i 2-7 z B):

python lottery_compare.py -a result1000_a.csv -b result1000_b.csv --colsa 3-8 --colsb 2-7

Wyświetlenie numerów typowań i zestawów z kolorowymi separatorami:

python lottery_compare.py -a lotto.csv -b moje.csv --setb all --rownumbers --ppcolor

Podsumowanie

Pakiet Lottery to kompletne rozwiązanie dla każdego, kto interesuje się symulacją gier liczbowych lub analizą statystyczną wyników losowań. Generator lottery.py oferuje zaawansowane mechanizmy losowania, w tym różne źródła prawdziwej losowości dzięki integracji z trandom.py, ograniczenia na odległości między liczbami i wsparcie dla równoległego przetwarzania na wielu wątkach. Programy statystyczne (lottery_stats.py, lottery_common.py, lottery_compare.py) pozwalają na dogłębną analizę danych – od prostych statystyk częstości, przez wyszukiwanie kombinacji i porównywanie zestawów, po szczegółowe raporty trafień typowań. Wszystkie programy obsługują kolorowe wyjście ANSI, co znacznie ułatwia interpretację wyników w terminalu. Źródła są w pełni dostępne na GitHubie na licencji MIT, gotowe do użycia i modyfikacji.

Źródła: github.com/IgorBrzezek/lottery

Nawigacja

← nanogen – generowanie obrazów za pomocą NanoBanana ale przez WWW
Generator liczb (prawie) losowych – trandom.py →
  • Szukaj

  • Kategorie

    • IT ogólnie (147)
      • Bezpieczeństwo (19)
        • Model AAA (7)
        • Szyfrowanie (1)
      • CCTV (3)
      • Hardware (2)
      • Podstawy informatyki (1)
      • Sieci (35)
        • Cisco (4)
          • Obsługa haseł (2)
        • MikroTik (8)
        • Pomiary w sieciach LAN (6)
          • iptraf-ng (3)
        • Protokół ARP (5)
        • Symulator sieci GNS3 (3)
        • WLAN / WiFi (5)
      • Software (78)
        • Bazy danych (13)
        • Programowanie (21)
        • Systemy operacyjne (21)
          • Linux Debian (18)
        • Windows (8)
      • WiFi (2)
      • Wirtualizacja (26)
  • Ostatnie wpisy

    • WinScreen czyli terminal z wirtualnymi oknami
    • Style Mover czyli przenoszenie stylów HTML
    • Generator obrazów AI za pomocą API
    • Generator modulacji AM i FM
    • Generator plików tekstowych i binarnych
  • Strona odwiedzona

    od 11.01.2013

  • Doskonała platforma e-learningowa Uzyskaj certyfikat IT

Proudly powered by WordPress Theme: Parament by Automattic.
7ads6x98y