글실험 기록
로또 100만 원어치를 2만 번 사 봤다: 시뮬레이터로 확인한 확률
로또랩의 추첨 엔진으로 1,000게임짜리 실험을 20,000번, 모두 2,000만 게임을 돌렸습니다. 1등은 두 번 나왔고, 100만 원을 쓰면 4·5등 당첨금으로 평균 18만 원이 돌아왔습니다.

로또랩을 만들게 된 질문은 단순했습니다. “로또를 100만 원어치, 1,000게임 사면 어떻게 될까?” 실제로 사 보기에는 아까운 돈이라, 실제 규칙과 똑같이 추첨하는 시뮬레이터를 만들었습니다. 이번에는 그 엔진을 그대로 가져와 같은 실험을 20,000번 반복했습니다. 모두 2,000만 게임, 가상으로 200억 원어치입니다.
먼저 계산부터
로또 6/45는 1부터 45까지 숫자 중 6개를 고릅니다. 가능한 조합은 45개 중 6개를 고르는 경우의 수, 8,145,060가지입니다. 추첨에서는 당첨번호 6개와 보너스 번호 1개를 뽑습니다.
등수별로 내가 고른 6개가 몇 개 맞는지에 따라 경우의 수를 세면 다음과 같습니다.
| 등수 | 조건 | 경우의 수 | 한 게임의 확률 |
|---|---|---|---|
| 1등 | 6개 일치 | 1 | 1/8,145,060 |
| 2등 | 5개 + 보너스 일치 | 6 | 1/1,357,510 |
| 3등 | 5개 일치 | 228 | 1/35,724 |
| 4등 | 4개 일치 | 11,115 | 1/733 |
| 5등 | 3개 일치 | 182,780 | 1/44.6 |
3등의 228은 이렇게 나옵니다. 당첨번호 6개 중 5개를 맞히는 방법이 6가지이고, 나머지 한 칸은 당첨번호도 보너스도 아닌 38개 중 하나여야 합니다. 6 × 38 = 228입니다. 5등은 당첨번호 중 3개(20가지)와 나머지 39개 중 3개(9,139가지)를 곱한 182,780입니다.
1,000게임을 사면 1등을 한 번이라도 맞힐 확률은 1 − (1 − 1/8,145,060)1,000, 약 0.0123%입니다. 8,000번 넘게 100만 원씩 써야 한 번 기대할 수 있는 확률입니다.
실험 방법
로또랩 웹사이트에서 실제로 돌아가는 추첨 코드(core.js)를 그대로 불러와 Node.js에서 실행했습니다.
- 난수는
xoshiro128**생성기를 씁니다. 1~45 사이 숫자를 고를 때 특정 숫자가 더 자주 나오지 않도록, 나누어떨어지지 않는 구간의 값은 버리고 다시 뽑습니다. - 6개 번호는 45개 공을 일부만 섞는 피셔–예이츠 방식으로 고릅니다. 모든 조합이 똑같은 확률로 나옵니다.
- 실험 한 번은 “당첨번호를 한 번 추첨하고, 자동 번호 1,000게임을 산다”입니다. 이것을 20,000번 반복했습니다.
- 시드를 고정해 두어 같은 코드를 다시 돌리면 같은 결과가 나옵니다.
M2 Pro 맥에서 2,000만 게임을 모두 계산하는 데 14초 걸렸습니다.
결과: 이론값과 거의 같았다
| 등수 | 나온 횟수 | 이론상 기대값 | 1,000게임당 |
|---|---|---|---|
| 1등 | 2 | 2.46 | 0.0001 |
| 2등 | 15 | 14.73 | 0.0008 |
| 3등 | 558 | 559.85 | 0.028 |
| 4등 | 27,436 | 27,292.62 | 1.37 |
| 5등 | 448,879 | 448,811.92 | 22.44 |
2,000만 게임에서 1등은 두 번 나왔습니다. 기대값 2.46에 가까운 결과입니다. 200억 원어치를 사서 1등 두 번입니다.
실험 단위로 보면 이렇습니다.
- 20,000번 중 3등 이상이 한 번이라도 나온 실험은 2.83%였습니다. 이론값 2.83%와 같습니다.
- 4등 이상이 나온 실험은 75.3%였습니다. 네 번 중 세 번은 4등 이상을 한 번쯤 맞힙니다.
- 아무것도 당첨되지 않은 실험은 한 번도 없었습니다. 1,000게임을 사면 5등은 적어도 7번, 많게는 42번 나왔습니다.
돈으로 바꾸면
실제 로또에서 금액이 정해진 등수는 4등(5만 원)과 5등(5천 원)뿐입니다. 1~3등 당첨금은 회차마다 판매액과 당첨자 수에 따라 달라지므로, 여기서는 4·5등 당첨금만 더했습니다.
| 100만 원을 썼을 때 돌려받은 4·5등 당첨금 | 금액 |
|---|---|
| 평균 | 180,810원 |
| 중앙값 | 175,000원 |
| 하위 10% ~ 상위 10% | 105,000 ~ 265,000원 |
| 가장 운이 좋았던 실험 | 535,000원 |
| 가장 운이 나빴던 실험 | 35,000원 |
평균 180,810원은 계산으로 구한 기대값 180,435원과 거의 같습니다(5등 22.44번 × 5천 원 + 4등 1.365번 × 5만 원). 100만 원을 쓰면 고정 당첨금으로 18만 원 정도가 돌아온다는 뜻입니다. 20,000번 중 고정 당첨금만으로 원금을 되찾은 실험은 없었습니다. 가장 운이 좋았던 실험도 46만 5천 원을 잃었고, 절반은 82만 5천 원 넘게 잃었습니다.
숫자를 보고 나서
계산으로도 알 수 있는 내용이지만, 직접 돌려 보면 감각이 달라집니다. “1등 확률 814만분의 1”은 너무 큰 숫자라 와닿지 않는데, “200억 원어치를 사서 1등 두 번”이라고 하면 조금 더 실감이 납니다.
한 가지 흥미로웠던 건 5등은 생각보다 자주 나온다는 점입니다. 1,000게임이면 평균 22번입니다. 당첨 알림이 계속 오니 “조금만 더 하면 될 것 같은” 느낌이 들기 쉽습니다. 하지만 그 22번을 다 합쳐도 11만 원입니다.
로또랩에서는 같은 실험을 브라우저에서 바로 돌려 볼 수 있습니다. 구매 금액을 1천만 원, 1억 원, 10억 원까지 올려 보면, 1등이 얼마나 멀리 있는지 직접 확인할 수 있습니다. 모든 계산은 내 브라우저에서 하고, 실제 돈은 들지 않습니다.