[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) 계산하기 (직류, 교류 단상, 교류 삼상)

NPN, PNP 트랜지스터 차이점

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

[아두이노] 가변저항(Potential Divider)과 전압분배(Voltage Divider)

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

커패시터에 저장된 에너지 계산

3상 모터 전력에서 전류 계산하기 (How to Convert Three-Phase Power to Amps)

[공압밸브] 5포트 2웨이 & 4포트 2웨이, 단동 VS 복동 차이점

SSR과 기계식 릴레이 차이점