[python] 로또 다음 회차에 나올 확률이 높은 숫자? (파이썬 히스토그램)

이 글은 지극히 비전문적이며, 실험에 의한 주관적인 생각에 근거한 내용임을 알려드립니다.


우선 로또의 현재까지 당첨내역은 동행복권 사이트에서 엑셀 형태로 받을 수 있습니다. 엑셀파일에서 당첨번호만 CVS 파일로 추출하였습니다. 해당 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
###############################################################################


originList = convertLottoCSVFileToList("./lotto.csv")
originArray = np.array(originList, dtype=np.ubyte)
originVector = np.reshape(originArray, originArray.size)

print(originVector)
plt.hist(originVector, bins=45, label='bins=45', histtype='step')


결과적으로 아래와 같은 히스토그램 그래프를 얻을 수 있습니다.


이론적으로 각 숫자가 나타날 확률은 동일하지만, 실제 나타나는 빈도수는 숫자마다 눈에 띌 정도의 차이를 보여주고 있습니다.


여기서 저는 한가지 실험을 해 보았습니다. 1~45 사이의 숫자를 무작위로 N번씩 뽑아서 각 숫자가 나타나는 빈도수를 시뮬레이션 해보았습니다. 아래는 실험에 사용된 파이썬 코드입니다.


import numpy as np
import matplotlib.pyplot as plt

a = np.random.randint(1, 45, 1000)
b = np.random.randint(1, 45, 10000)
c = np.random.randint(1, 45, 100000)

figure, axis = plt.subplots(3, constrained_layout = True)

axis[0].hist(a, bins=44, color="red", histtype='step')
axis[0].set_title("N=1000")
axis[1].hist(b, bins=44, color="blue", histtype='step')
axis[1].set_title("N=10000")
axis[2].hist(c, bins=44, color="green", histtype='step')
axis[2].set_title("N=100000")

plt.show()


아래는 결과 그래프입니다.


위 그래프로 무엇을 추론할 수 있을까요? 숫자를 뽑는 회수가 많아질 수록, 숫자의 빈도수 차이는 점점 줄어들고 있습니다. 이 결과를 로또에 대입하면, 누적 빈도수가 적은 숫자일 수록 다음 회차에 나타날 확률이 높을 수 있다는 것입니다. 


끝.


댓글

이 블로그의 인기 게시물

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

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

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

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

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

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

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

공압회로 기호

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

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