[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를 벗어난다면 해당 번호를 배제할 근거가 되는 것입니다.


끝.

댓글

이 블로그의 인기 게시물

[PLC] PLC 아날로그 입출력 기본

전력(kW) 계산하기 (직류, 교류 단상, 교류 삼상)

공압 속도 제어: 미터인 vs 미터아웃

[PLC] 채터링 현상과 입력 필터

제너 다이오드에 저항을 연결하는 이유

[python] 파이썬 pyplot 2차원 그래프 샘플 코드

[PLC] 래더 다이어그램과 PLC

공압회로 기호

[PLC] PLC 입출력 타입 - 싱크 & 소스 (Sink & Source)

3선 결선식 센서의 타입 PNP, NPN