Telepítés:
pip install requests matplotlibA program fájlokat készít:
skandinav_lotto.csvstatisztika.pngFunkciók:
- automatikus óránkénti frissítés,
- AI-alapú súlyozás,
- több stratégia,
- grafikonkészítés,
- több szelvény generálása,
- utolsó húzás kizárása.
import requests import csv import random import time from io import StringIO from collections import Counter from datetime import datetime import matplotlib.pyplot as plt # ============================================ # SKANDINaV LOTTo AI ELEMZo RENDSZER # ============================================ # # Funkciok: # # 1. Automatikus CSV letöltes # 2. CSV mentes # 3. Gyakorisagi elemzes # 4. Legregebben húzott szamok # 5. AI-alapú pontozas # 6. Több strategia # 7. Több szelveny generalas # 8. Grafikon keszites # # ============================================ URL = "https://www.szerencsejatek.hu/export/skandinav_lotto.csv" # ============================================ # CSV LETÖLTeS # ============================================ def download_data(): print("Adatok letöltese...") response = requests.get(URL, timeout=10) response.raise_for_status() with open("skandinav_lotto.csv", "w", encoding="utf-8") as f: f.write(response.text) return response.text # ============================================ # CSV FELDOLGOZaS # ============================================ def parse_csv(text): csv_data = StringIO(text) reader = csv.reader(csv_data, delimiter=';') header = next(reader, None) draws = [] for row in reader: try: if len(row) < 25: continue year = int(row[0]) week = int(row[1]) numbers = list(map(int, row[11:25])) draws.append({ "year": year, "week": week, "numbers": numbers }) except: continue return draws # ============================================ # GYAKORISaG SZaMiTaS # ============================================ def calculate_frequency(draws): freq = Counter() for draw in draws: for number in draw["numbers"]: freq[number] += 1 return freq # ============================================ # LEGReGEBBEN HÚZOTT SZaMOK # ============================================ def calculate_age(draws): last_seen = {} for index in range(len(draws)-1, -1, -1): draw = draws[index] for number in draw["numbers"]: if number not in last_seen: last_seen[number] = len(draws) - index return last_seen # ============================================ # AI PONTOZaS # ============================================ def ai_score(draws): freq = calculate_frequency(draws) age = calculate_age(draws) latest = set(draws[-1]["numbers"]) scores = {} for n in range(1, 36): if n in latest: continue frequency_score = freq[n] age_score = age.get(n, 999) # AI súlyozas score = ( age_score * 2 - frequency_score * 0.3 + random.uniform(0, 5) ) scores[n] = score return scores # ============================================ # STRATeGIaK # ============================================ def strategy_oldest(draws): age = calculate_age(draws) latest = set(draws[-1]["numbers"]) ranking = [] for n in range(1, 36): if n in latest: continue ranking.append((n, age.get(n, 999))) ranking.sort(key=lambda x: x[1], reverse=True) return sorted([x[0] for x in ranking[:7]]) def strategy_most_common(draws): freq = calculate_frequency(draws) latest = set(draws[-1]["numbers"]) ranking = [] for n in range(1, 36): if n in latest: continue ranking.append((n, freq[n])) ranking.sort(key=lambda x: x[1], reverse=True) return sorted([x[0] for x in ranking[:7]]) def strategy_ai(draws): scores = ai_score(draws) ranking = sorted(scores.items(), key=lambda x: x[1], reverse=True) return sorted([x[0] for x in ranking[:7]]) def strategy_random(): return sorted(random.sample(range(1, 36), 7)) # ============================================ # GRAFIKON # ============================================ def draw_chart(draws): freq = calculate_frequency(draws) x = list(range(1, 36)) y = [freq[n] for n in x] plt.figure(figsize=(12, 6)) plt.bar(x, y) plt.xlabel("Szam") plt.ylabel("Elofordulas") plt.title("Skandinav lotto szamgyakorisag") plt.xticks(x) plt.tight_layout() plt.savefig("statisztika.png") print("\nGrafikon mentve: statisztika.png") # ============================================ # SZELVeNYEK # ============================================ def generate_tickets(draws): print("\n==============================") print("GENERaLT SZELVeNYEK") print("==============================") print("\n1. Legregebbi strategia:") print(strategy_oldest(draws)) print("\n2. Leggyakoribb strategia:") print(strategy_most_common(draws)) print("\n3. AI strategia:") print(strategy_ai(draws)) print("\n4. Veletlen strategia:") print(strategy_random()) # ============================================ # AUTOMATIKUS FRISSiTeS # ============================================ def auto_update(): while True: try: print("\n===================================") print("Frissites ideje:", datetime.now()) print("===================================") text = download_data() draws = parse_csv(text) if not draws: print("Nincs feldolgozhato adat.") continue latest = draws[-1] print("\nUtolso húzas:") print(sorted(latest["numbers"])) generate_tickets(draws) draw_chart(draws) except Exception as e: print("Hiba:", e) # 1 ora varakozas print("\nKövetkezo frissites 1 ora múlva...") time.sleep(3600) # ============================================ # INDiTaS # ============================================ if __name__ == "__main__": auto_update()
Közművelődés, kultúra, oktatás, könyvtár, pedagógia, műszaki informatika, számítástechnika
2026. május 24., vasárnap
Egy összetett skandináv lottó elemző és generáló program python nyelven
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése