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

Összehasonlitás

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
# ----------------------------
def stats(draws):
last_seen = {}
freq = {}

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

return last_seen, freq


# ----------------------------
# MODELL 1: RANDOM
# ----------------------------
def model_random():
return random.sample(range(1, 36), 7)


# ----------------------------
# MODELL 2: COLD (hideg)
# ----------------------------
def model_cold(last_seen):
sorted_nums = sorted(last_seen.items(), key=lambda x: x[1])
return [n for n, _ in sorted_nums[:7]]


# ----------------------------
# MODELL 3: HOT (gyakori)
# ----------------------------
def model_hot(freq):
sorted_nums = sorted(freq.items(), key=lambda x: x[1], reverse=True)
return [n for n, _ in sorted_nums[:7]]


# ----------------------------
# MODELL 4: AI súlyozott
# ----------------------------
def model_ai(last_seen, freq, t):
weights = {}

for n in range(1, 36):
cold = t - last_seen.get(n, -1)
f = freq.get(n, 0)

score = cold - f * 0.5
if score < 0:
score = 0.1

weights[n] = score

nums = list(weights.keys())
w = list(weights.values())

return random.choices(nums, weights=w, k=7)


# ----------------------------
# BACKTEST
# ----------------------------
def backtest(draws, model_name):
last_seen, freq = stats(draws)

hits_total = 0
bankroll = 0
ticket_price = 300

for i in range(10, len(draws)):
history = draws[:i]
actual = set(draws[i])

last_seen, freq = stats(history)

if model_name == "random":
ticket = set(model_random())
elif model_name == "cold":
ticket = set(model_cold(last_seen))
elif model_name == "hot":
ticket = set(model_hot(freq))
elif model_name == "ai":
ticket = set(model_ai(last_seen, freq, len(history)))
else:
continue

hits = len(ticket & actual)
hits_total += hits

bankroll -= ticket_price
bankroll += hits * 1000 # egyszerű jutalom modell

return hits_total, bankroll


# ----------------------------
# KIVÁLASZTÓ
# ----------------------------
def main():
draws = load_draws()

if len(draws) < 15:
print("Kevés adat")
return

models = ["random", "cold", "hot", "ai"]

results = {}

print("🤖 AI MODEL KIVÁLASZTÁS\n")

for m in models:
hits, money = backtest(draws, m)
results[m] = money

print(f"{m.upper()} -> bankroll: {money} Ft | találatok: {hits}")

best = max(results, key=results.get)

print("\n🏆 LEGJOBB MODELL:", best.upper())


if __name__ == "__main__":
main()

-------------

import sqlite3
import numpy as np

DB_NAME = "skandinav_lotto.db"

NUMBERS = 35
WINDOW = 5


# ----------------------------
# ADAT
# ----------------------------
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()

data = []
for r in rows:
vec = np.zeros(NUMBERS)
for n in map(int, r[0].split(",")):
vec[n - 1] = 1
data.append(vec)

return np.array(data)


# ----------------------------
# EGYSZERŰ "NEURÁLIS" SÚLYOK
# ----------------------------
def train_like_nn(data):
weights = np.zeros(NUMBERS)

for i in range(len(data) - 1):
weights += data[i] * (i / len(data))

return weights


# ----------------------------
# PREDIKCIÓ
# ----------------------------
def predict(weights):
probs = weights + np.random.random(NUMBERS) * 0.1

top7 = np.argsort(probs)[-7:] + 1

return sorted(top7)


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

if len(data) < 10:
print("Kevés adat")
return

weights = train_like_nn(data)

result = predict(weights)

print("🧠 TF-NÉLKÜLI NEURÁLIS AI LOTTÓ:\n")
print(result)


if __name__ == "__main__":
main()

Nincsenek megjegyzések:

Megjegyzés küldése