2026. május 25., hétfő

Súlyozott diverzifikáció előrejelzés, statisztikai szimulációval

import sqlite3
import random

DB_NAME = "skandinav_lotto.db"


# ----------------------------
# ADATBETÖLTÉS
# ----------------------------
def load_draws():
conn = sqlite3.connect(DB_NAME)
cur = conn.cursor()

cur.execute("""
SELECT numbers
FROM draws
ORDER BY id ASC
""")

rows = cur.fetchall()
conn.close()

return [list(map(int, r[0].split(","))) for r in rows]


# ----------------------------
# STATISZTIKA SZÁMOLÁS
# ----------------------------
def calculate_stats(draws):
last_seen = {}
freq = {}

for idx, numbers in enumerate(draws):
for n in numbers:
last_seen[n] = idx
freq[n] = freq.get(n, 0) + 1

return last_seen, freq


# ----------------------------
# AI-SÚLYOZÁS
# ----------------------------
def ai_weights(last_seen, freq, total_draws):
weights = {}

for n in range(1, 36):
# ha soha nem volt
last = last_seen.get(n, -1)
f = freq.get(n, 0)

# hidegség (minél régebbi, annál nagyobb)
cold_score = (total_draws - last)

# gyakoriság büntetés
freq_penalty = f * 0.5

weight = cold_score - freq_penalty

if weight < 0:
weight = 0.1

weights[n] = weight

return weights


# ----------------------------
# AI SZÁM GENERÁLÁS
# ----------------------------
def ai_pick_numbers(weights):
numbers = list(weights.keys())
w = list(weights.values())

result = set()

while len(result) < 7:
pick = random.choices(numbers, weights=w, k=1)[0]
result.add(pick)

return sorted(result)


# ----------------------------
# MAIN
# ----------------------------
def main():
draws = load_draws()

if not draws:
print("Nincs adat az adatbázisban!")
return

last_seen, freq = calculate_stats(draws)

weights = ai_weights(last_seen, freq, len(draws))

prediction = ai_pick_numbers(weights)

print("🤖 AI LOTTÓ ELŐREJELZÉS (súlyozott modell):\n")

print("🎯 Javasolt 7 szám:")
print(prediction)


if __name__ == "__main__":
main()

Nincsenek megjegyzések:

Megjegyzés küldése