← LottoLAB
Methodology

통계 분석 방법

LottoLAB이 실제로 계산에 사용하는 데이터와 로직, 그리고 그 한계를 그대로 설명합니다.

데이터 출처와 수집 기준

동행복권이 공식 발표한 회차·추첨일·당첨번호 6개를 정적 데이터 파일(CSV)로 서비스에 포함합니다. 수집 범위는 제1회차부터 가장 최근에 발표된 회차까지 전 구간이며, 중간 회차를 임의로 빼거나 표본을 추출하지 않습니다.

별도의 서버나 데이터베이스 없이, 브라우저가 이 파일을 직접 읽어 모든 계산을 사용자 기기에서 수행합니다. 화면 하단에 현재 분석에 사용된 기준 회차와 누적 회차 수를 항상 표시합니다.

데이터 업데이트 방식

추첨(매주 토요일) 이후 자동화된 수집 작업이 동행복권 공개 회차 결과를 조회해 새 회차를 데이터 파일 맨 앞에 추가하고, 재배포와 함께 모든 분석 결과가 다시 계산됩니다. 이미 저장된 과거 회차는 수정하지 않고 추가만 합니다.

수집이 실패하거나 아직 발표 전이라면 데이터는 그대로 유지되며, 이전 회차를 최신 회차인 것처럼 표시하지 않습니다. 마지막 추첨 이후로도 갱신이 확인되지 않으면 화면에 "최근 데이터 업데이트를 확인 중입니다"라고 안내합니다.

번호별 출현 빈도

선택한 구간(최근 10회부터 전체 회차까지) 안에서 각 번호가 몇 번 등장했는지 단순 집계합니다. 이론적으로 기대되는 균등 분포와 비교해 편차를 함께 보여줍니다.

패턴 프로파일링(패턴 매칭 분석)

최근 N회차(기본 100회) 당첨번호에서 홀짝 비율, 저고 비율(1~22 / 23~45), 번호대별 분포, 온도 구성(핫/미지근/콜드), 총합, 끝수합, 연속수 길이, 이월수 개수 8가지 특성의 경험적 분포를 계산합니다.

이후 이 분포에 가장 잘 부합하는 조합을, 대량 후보 생성 후 한 번호씩 교체하며 수렴시키는 국소 탐색(hill climbing) 방식으로 찾습니다.

이 엔진이 하는 일은 과거 조합들이 보여 온 구조적 특성에 부합하는 조합을 찾는 것입니다. 다음 회차 번호를 예측하는 것이 아닙니다. 추첨이 독립 균등 시행인 이상 패턴 적합도가 높다고 당첨 확률이 올라가지 않습니다.

번호 배치 패턴

로또 마킹 용지에 인쇄된 7칸×6줄(+ 마지막 줄 3칸) 격자를 기준으로, 당첨번호 6개가 어느 가로줄·세로줄에 몰리는지 분석합니다. 줄마다 칸 수가 달라 기대값은 초기하분포로 정확히 계산해 크기 차이를 보정합니다.

인기 선택 패턴 분석 (파리뮤추얼 최적화)

한국 로또는 1등 당첨금 총액을 당첨자 수로 나눠 갖는 파리뮤추얼 방식입니다. 당첨 확률(1/8,145,060)은 고정이지만, 당첨 시 함께 나눠 갖는 인원의 기댓값은 어떤 조합을 고르느냐에 따라 달라집니다.

생일수·용지 패턴·연속수·등차수열·선호수·과거 당첨 조합 재사용·구간 쏠림·합계 등 8가지 요인을 바탕으로, 사람들이 몰리는 선택 패턴을 정량화하고 이를 피한 조합을 계산합니다.

이것이 LottoLAB에서 유일하게 "수학적으로 유효한" 최적화입니다. 당첨 확률 자체를 바꾸지는 못하지만, 당첨 시 실제 수령액의 기댓값은 실제로 높일 수 있습니다.

난수 생성

순수 무작위 조합은 Math.random() 대신 crypto.getRandomValues()와 기각 샘플링(rejection sampling)을 사용해 편향 없는 균등 난수를 만듭니다.

기대 출현횟수와 z-score

기대 출현횟수는 균등 분포를 가정했을 때 한 번호가 나올 것으로 기대되는 횟수로, (전체 회차 수 × 6 / 45)로 계산합니다. 예를 들어 1,200회차라면 번호당 160회입니다.

z-score는 (관측 횟수 − 기대 횟수) / 표준편차로, 편차를 회차 수와 무관하게 비교할 수 있게 표준화한 값입니다. |z| > 2가 나올 확률은 번호당 약 4.6%이므로 45개 중 두 개 정도는 항상 그 범위를 벗어나는 것이 정상입니다.

z-score가 높다고 해서 다음 회차에서 해당 번호가 더 잘 나온다는 의미는 아닙니다. z-score는 과거 데이터의 모양을 요약할 뿐입니다.

카이제곱 검정과 p-value

카이제곱 검정은 관측된 번호 분포가 이론적으로 기대되는 균등분포와 얼마나 다른지를 확인하는 통계 방법입니다. 각 번호의 (관측 − 기대)² / 기대 를 45개 모두 더해 χ² 값을 구합니다.

자유도는 44(45개 번호 − 1)이며 유의수준 5%의 임계값은 약 60.5입니다. p-value는 "균등 분포가 참일 때 지금 관측된 것만큼의 편차가 나올 확률"로, 0.05보다 크면 관측된 편차가 무작위에서 흔히 나올 수 있는 수준이라는 뜻입니다.

검정을 통과했다는 것은 "균등함이 증명됐다"가 아니라 "균등하지 않다는 증거를 찾지 못했다"는 뜻입니다. 반대로 어느 구간에서 임계값을 넘더라도, 구간을 여러 개 나눠 반복 검정하면 우연히 넘는 경우가 생깁니다(다중 비교 문제).

몬테카를로 시뮬레이션

수식으로 바로 답하기 어려운 질문("이만한 편차가 흔한가?")에는 가상의 회차를 대량으로 생성해 분포를 만들고 실제 관측값이 그 분포의 어디쯤인지 확인하는 방식을 씁니다.

조합 생성 단계의 후보 탐색과 4단계 정밀분석의 표본 수집에도 같은 원리의 무작위 반복 시행이 사용됩니다.

시뮬레이션은 "무작위라면 어떤 모습일까"를 보여줄 뿐, 다음 회차 번호에 대해서는 아무것도 말하지 않습니다.

백테스트와 시점 누수 방지

LottoLAB은 전용 백테스트 대시보드를 제공하지 않습니다. 대신 "조합 생성"이나 "패턴 매칭 분석"으로 만든 조합을 저장하면, "저장된 조합"과 "내 번호 확인" 탭에서 그 이후에 실제로 발표된 회차와만 비교합니다.

이미 발표된 과거 회차 전체를 보고 그중 잘 맞은 조합을 골라내는 방식(시점 누수)은 사용하지 않습니다.

분석의 한계와 오해 방지

이 페이지의 어떤 계산도 다음 회차 번호를 좁혀주지 않습니다. 로또 추첨은 독립 균등 시행이라, 과거 데이터에는 미래를 예측할 정보가 원리적으로 남지 않습니다.

표본 크기의 한계도 있습니다. 지금까지 진행된 회차 수는 전체 조합 수 8,145,060에 비하면 매우 작아, 조합 단위의 통계는 신뢰할 만한 결론을 내기에 부족합니다. 번호 단위 통계도 구간을 짧게 잡을수록 잡음이 커집니다.

범주의 확률과 개별 조합의 확률을 혼동하지 않는 것이 중요합니다. 어떤 패턴이 자주 관찰되는 이유는 대개 그 패턴에 속하는 조합의 개수가 많기 때문이며, 그 안의 조합 하나가 뽑힐 확률은 언제나 1/8,145,060입니다.

LottoLAB이 데이터로 조정할 수 있다고 주장하는 유일한 대상은 당첨 확률이 아니라, 당첨되었을 때 함께 나눠 갖는 인원의 기댓값입니다.

관련 콘텐츠