[python] 로또 번호와 표준편차 (파이썬 plot 활용)
파이썬을 활용하여 로또 번호의 회차별 표준편차를 구해보겠습니다. 표준편차를 통해 알고자 하는 것은, 한 회차 내 번호간 거리(번호끼리 얼마나 떨어져 있는가)를 확인해 보고자 합니다.
이를 통해 자동으로 로또 번호를 생성할 때 번호 간격이 너무 좁거나, 너무 넓은 것을 배제할 근거가 될 것이라 생각합니다.
아래는 1033회차까지 당첨번호 CSV 파일을 통해 번호들 간의 표준편차를 구하는 파이썬 코드입니다.
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 getStdListOfNumberSet(originArray):
lst = []
for numberSet in originArray:
lst.append(np.std(numberSet))
return lst
###############################################################################
originList = convertLottoCSVFileToList("./lotto.csv")
originArray = np.array(originList, dtype=np.ubyte)
originStdList = getStdListOfNumberSet(originArray)
print(originStdList)
plt.plot(originStdList, "ro")
아래는 위 코드의 실행 결과입니다.
위 결과를 보면 대부분의 표준편차 값은 10~14 사이에 포진해 있는 것을 확인할 수 있습니다. 따라서 자동으로 생성한 로또 번호의 표준편차 값이 10~14를 벗어난다면 해당 번호를 배제할 근거가 되는 것입니다.
끝.
댓글
댓글 쓰기