로또 번호에 "이유"를 붙이기까지: 9가지 생성 방법을 만든 기록
처음의 로또 번호 생성기는 버튼을 누르면 1~45 중 6개를 무작위로 뽑아 주는 것이 전부였습니다. 공정하긴 했지만 "왜 이 번호인가"에 대한 이야기가 없었습니다. 사람들이 로또 번호를 고를 때는 생일, 가족 이름, 간밤의 꿈처럼 저마다의 이유를 붙이곤 합니다.
그래서 번호마다 이유를 붙여 주는 생성기로 다시 만들었습니다. 이 글은 로또 번호 생성기의 9가지 방법을 만들면서 정한 원칙과, 그 과정에서 직접 세어 본 숫자들을 정리한 개발 일지입니다.
가장 먼저 정한 원칙: 확률은 속이지 않는다
로또는 모든 조합의 1등 확률이 8,145,060분의 1로 같습니다. 어떤 방법을 써도 이 숫자는 바뀌지 않습니다. 그래서 "당첨 확률이 높은 번호", "이번 주 나올 번호" 같은 말은 화면 어디에도 쓰지 않기로 했습니다.
대신 방법이 줄 수 있는 것을 정직하게 나눴습니다. 기념일·이름·꿈·띠·수학 테마는 번호를 고르는 재미와 이야기를 줍니다. "덜 겹치게"는 확률은 같지만, 당첨됐을 때 상금을 나눠 받을 사람이 적을 가능성을 높입니다. 화면 맨 아래에는 "이 번호는 당첨 번호를 예측하거나 보장하지 않아요."를 굵게 적었습니다.
같은 이름이면 언제나 같은 번호
이름이나 생일로 만든 번호가 누를 때마다 바뀌면 "내 번호"라는 느낌이 들지 않습니다. 그래서 기념일·이름·띠 방법은 같은 입력이면 A게임이 언제나 같은 번호가 나오도록 만들었습니다.
- 이름: 한글은 "가"부터 "힣"까지 11,172자가 순서대로 정해져 있습니다. 글자마다 그 순번을 45로 나눈 나머지에 1을 더해 번호로 씁니다. 예를 들어 같은 "람" 자는 누가 넣어도 같은 번호가 됩니다.
- 기념일: 날짜에서 일, 월, 월+일, 연도 끝 두 자리(45를 넘으면 연도 숫자의 합), 월×일, 날짜 숫자 전체의 합을 차례로 꺼냅니다. 45를 넘거나 이미 나온 수는 건너뜁니다.
- 모자란 자리: 의미 있는 수가 6개보다 적으면 나머지를 채워야 합니다. 이때도 입력값에서 시작하는 난수열을 써서, 같은 입력이면 채워지는 번호까지 같게 했습니다.
한편 무작위가 필요한 방법(무작위·꿈·덜 겹치게·균형)은 브라우저의 암호학적 난수를 씁니다. 같은 결과가 나와야 하는 곳과 매번 달라야 하는 곳을 구분한 것입니다.
옛 숫자 짝을 빌려 온 꿈·띠 방법
꿈과 띠는 아무 숫자나 붙이면 의미가 없어집니다. 그래서 오래전부터 쓰여 온 두 가지 숫자 짝을 빌려 왔습니다.
| 쓴 규칙 | 번호 | 쓰는 곳 |
|---|---|---|
| 12띠의 순서 | 쥐 1, 소 2, 호랑이 3 … 돼지 12, 그리고 12씩 더한 수 | 꿈에 나온 동물, 태어난 해의 띠 |
| 하도(河圖)의 오행 수 | 물 1·6, 불 2·7, 나무 3·8, 쇠 4·9, 흙 5·10 | 꿈에 나온 자연, 태어난 해 천간의 오행 |
예를 들어 1990년생은 경오년이라 말띠(7번째)이고, 천간 "경"은 쇠 기운이라 하도수 4·9가 들어갑니다. 화면에는 "7 말띠 (12띠 7번째)", "4 경년 쇠 기운 (하도수)"처럼 번호마다 출처를 적었습니다.
8,145,060개 조합을 모두 세어 본 이유
"균형 잡힌 번호"를 만들면서, 흔히 말하는 "홀짝이 고르고 합계가 적당한 조합이 잘 나온다"는 말을 확인하고 싶었습니다. 그래서 1~45에서 6개를 고르는 모든 조합을 하나씩 세어 봤습니다.
| 조건 | 전체 조합 중 비율 |
|---|---|
| 여섯 수의 합이 100~175 | 79.0% |
| 홀수가 2~4개 | 81.3% |
| 10단위 구간이 3곳 이상 | 96.9% |
| 위 세 조건을 모두 만족 | 62.6% |
| 연속 번호가 하나라도 있음 | 52.9% |
| 여섯 수가 모두 31 이하 (생일 숫자만) | 9.0% |
결과는 분명했습니다. 균형 잡힌 조합이 자주 당첨되는 것처럼 보이는 이유는, 그런 조합이 원래 전체의 62.6%를 차지하기 때문입니다. 연속 번호도 절반 넘는 조합에 들어 있으니 "연속 번호는 잘 안 나온다"는 말도 사실이 아닙니다. 이 숫자는 화면 설명에 그대로 적었습니다.
"덜 겹치게"의 네 가지 조건
1등 상금은 같은 번호를 산 사람끼리 나눕니다. 그래서 많은 사람이 고를 법한 모양을 피하는 조건 네 가지를 정하고, 무작위로 뽑은 조합이 모두 통과할 때까지 다시 뽑게 했습니다.
- 32 이상 번호가 2개 이상: 생일 숫자(1~31)로만 이뤄진 조합을 피합니다. 전체 조합의 9.0%가 모두 31 이하입니다.
- 3개 이상 이어지는 연속 번호 없음: 1-2-3 같은 모양을 피합니다.
- 용지 한 줄·한 세로줄에 4개 이상 몰리지 않음: 로또 용지는 한 줄에 7칸씩이라, 세로 한 줄을 쭉 칠하는 사람이 있을 수 있습니다.
- 같은 간격으로 늘어선 번호 4개 이상 없음: 5-10-15-20 같은 등차 모양을 피합니다.
고정 번호를 너무 많이 넣으면 조건을 모두 맞출 수 없는 경우가 생깁니다. 이때는 5,000번까지 다시 뽑아 보고, 그래도 안 되면 결과 옆에 "고정·제외 번호 때문에 모든 조건을 맞추지 못했어요"라고 솔직하게 알려 줍니다.
만들고 나서 고친 것
- 처음에는 이름 방법에서 "모자라서 채운 번호"에도 의미 표시(흰 점)가 붙었습니다. 실제로는 이름에서 나온 번호가 아니므로 흰 점을 떼고, "그 외 35, 37: 날짜에서 이어진 번호"처럼 한 줄로 묶었습니다.
- 휴대폰 화면에서 조합 요약 줄에 엉뚱한 테두리가 그려졌습니다. 사이트 공통 스타일과 이름이 겹친 탓이라 이름을 바꿔 해결했습니다.
- 입력한 이름은 기기에도 저장하지 않습니다. 다음에 편하도록 고른 방법·날짜·태어난 해만 이 기기에 남기고, 서버로는 아무것도 보내지 않습니다.
자주 묻는 질문
- 의미 있는 번호가 무작위 번호보다 잘 당첨되나요?
- 아니요. 모든 조합의 1등 확률은 8,145,060분의 1로 같습니다. 의미 있는 방법은 번호를 고르는 재미를 더해 줄 뿐입니다.
- 같은 생일을 넣은 다른 사람도 같은 번호를 받나요?
- 네. 기념일 방법은 같은 날짜면 A게임이 같은 번호입니다. 다른 사람과 겹치는 것이 싫다면 B게임 이후를 쓰거나, 여러 날짜를 함께 넣어 보세요.