[python] 로또 번호들의 평균값은 어떤 패턴을 보일까? (numpy 평균 함수)
이 글은 지극히 비전문적이며, 실험에 의한 주관적인 생각에 근거한 내용임을 알려드립니다.
우선 로또의 현재까지 당첨내역은 동행복권 사이트에서 엑셀 형태로 받을 수 있습니다. 엑셀파일에서 당첨번호만 CVS 파일로 추출하였습니다. 이 데이터를 활용하여 회차별 로또 번호들의 평균값은 어떤 형태를 띄고 있는지 알아 보겠습니다.
import csv
import json
import numpy as np
import matplotlib.pyplot as plt
###############################################################################
def convertLottoCSVFileToList(filepath):
rows = []
try:
with open(filepath) as f:
reader = csv.reader(f)
for row in reader:
cols = []
for number in row:
cols.append(number)
rows.append(cols)
except csv.Error as e:
print(f"Error reading CSV file at line {reader.line}: {e}")
exit(-1)
return rows
###############################################################################
###############################################################################
def getAvgListOfNumberSet(originArray):
lst = []
for numberSet in originArray:
lst.append(np.average(numberSet))
return lst
###############################################################################
originList = convertLottoCSVFileToList("./lotto.csv")
originArray = np.array(originList, dtype=np.ubyte)
originAvgList = getAvgListOfNumberSet(originArray)
figure, axis = plt.subplots(2, constrained_layout = True)
axis[0].plot(originAvgList, "ro")
axis[1].hist(originAvgList, bins=255)
plt.show()
위 코드를 실행하면 아래와 같은 결과를 얻습니다.
회차별 로또 번호들의 평균값은 정규분포 형태를 띄는 것을 확인할 수 있습니다. 그리고 위 그래프에서 낮은 평균값은 작은 수들로 이루어진 당첨번호 의미하며, 높은 평균값은 큰 수로 이루어진 당첨번호를 의미합니다.
위 데이터를 활용하면, 랜덤으로 생성된 로또 번호가 정규분포상 가운데 지점을 많이 벗어난 번호 세트의 경우, 추첨번호에서 제외하는 것으로 응용이 가능할 것 같습니다.
끝.
댓글
댓글 쓰기