Create main_special.py
This commit is contained in:
parent
cb464ff16f
commit
fd514a903a
67
main_special.py
Normal file
67
main_special.py
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
# Lotto prediction with Genetic Algorithm and Mersenne Twister (MT19937)
|
||||||
|
# Go Namhyeon <gnh1201@gmail.com>
|
||||||
|
# first created: 2021-04-04
|
||||||
|
# last updated: 2022-05-26
|
||||||
|
# download excel data: https://dhlottery.co.kr/gameResult.do?method=byWin
|
||||||
|
|
||||||
|
import math
|
||||||
|
import random
|
||||||
|
import pandas as pd
|
||||||
|
import numpy as np
|
||||||
|
from geneticalgorithm2 import geneticalgorithm2 as ga
|
||||||
|
|
||||||
|
cols = [13, 14, 15, 16, 17, 18, 19] # included bonus number
|
||||||
|
df = pd.read_excel('excel.xlsx', skiprows=2, usecols=cols, names=[0, 1, 2, 3, 4, 5, 6])
|
||||||
|
rows = df.values[:100]
|
||||||
|
|
||||||
|
def step1():
|
||||||
|
data = []
|
||||||
|
|
||||||
|
i = 0
|
||||||
|
while i < len(rows):
|
||||||
|
cur = rows[i]
|
||||||
|
|
||||||
|
_rows = list(rows)[i+1:i+11]
|
||||||
|
|
||||||
|
showns = []
|
||||||
|
for row in _rows:
|
||||||
|
showns = sorted(list(set(showns) | set(row)))
|
||||||
|
notShowns = sorted(list(set(range(1, 46)) - set(showns)))
|
||||||
|
data.append({
|
||||||
|
'showns': showns,
|
||||||
|
'notShowns': notShowns
|
||||||
|
})
|
||||||
|
|
||||||
|
i = i + 1
|
||||||
|
|
||||||
|
return data
|
||||||
|
|
||||||
|
data = step1()
|
||||||
|
|
||||||
|
def get_numbers(lastData):
|
||||||
|
num = random.sample(range(1, 46), 7)
|
||||||
|
notShowns = lastData['notShowns']
|
||||||
|
return random.sample(list(set(num) | set(notShowns)), 6)
|
||||||
|
|
||||||
|
def evaluate(nums):
|
||||||
|
_rows = list(rows)
|
||||||
|
|
||||||
|
score = 0
|
||||||
|
for row in _rows:
|
||||||
|
result = len(list(set(nums) & set(row)))
|
||||||
|
if result > 5:
|
||||||
|
score += 100
|
||||||
|
elif result > 4:
|
||||||
|
score += 75
|
||||||
|
elif result > 3:
|
||||||
|
score += 50
|
||||||
|
elif result > 2:
|
||||||
|
score += 25
|
||||||
|
|
||||||
|
return str(round((score / len(rows)) * 50, 2)) + '%'
|
||||||
|
|
||||||
|
k = 0
|
||||||
|
while k < 10:
|
||||||
|
nums = get_numbers(data[0])
|
||||||
|
k = k + 1
|
||||||
|
print (evaluate(nums), nums)
|
Loading…
Reference in New Issue
Block a user