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