Ver4.0 생일 역설, 23명만 모여도 생일이 같은 사람이 있을 확률이 50%를 넘는 이유

생일 역설, 23명만 모여도 생일이 같은 사람이 있을 확률이 50%를 넘는 이유
직관은 배신한다, 그런데 계산은 정직하다
🎂 "야, 우리 반에 생일 같은 애 있어?"
친구랑 이런 내기 해본 적 있어?
"교실에 23명 있는데, 그중에 생일 똑같은 사람이 있을까 없을까?"
거의 모든 사람이 이렇게 대답해. "에이, 1년이 365일인데 23명 가지고 뭘."
느낌상 23 나누기 365 하면 6% 좀 넘잖아. 그러니까 거의 없다에 걸고 싶어지지.
그런데 실제 확률은 50.73%야. 동전 던지기보다 오히려 살짝 유리한 내기라는 뜻이지.
이게 그 유명한 생일 역설(Birthday Paradox), 또는 생일 문제(Birthday Problem)야.
여기서 '역설'은 논리적 모순이라는 뜻이 아니야.
수학적으로는 아무 문제 없이 딱 떨어지는 결과인데,
우리 직관이 너무 심하게 틀려서 '역설처럼 느껴진다'는 의미야.
이런 걸 전문 용어로 veridical paradox(진실 역설)라고 불러.
답이 참인데도 믿기지 않는 종류의 역설이지.
오늘은 이걸 중학교 수준 수식만 가지고 완전히 납득될 때까지 뜯어볼 거야.
그리고 이게 단순 파티 잡기술이 아니라, 여러분이 쓰는 비밀번호·블록체인·데이터베이스 보안의 핵심 원리라는 것까지 보여줄게.
🧠 왜 직관이 틀릴까? '나 중심 사고'의 함정
사람들이 틀리는 이유는 사실 아주 명확해.
머릿속에서 무의식적으로 이런 질문으로 바꿔버리기 때문이야.
❌ 우리가 착각하는 질문
"이 방에 나와 생일이 같은 사람이 있을 확률은?"
⭕ 실제 질문
"이 방에 아무 두 사람이든 생일이 같은 쌍이 있을 확률은?"
이 둘은 완전히 다른 문제야.
첫 번째는 '나'라는 고정점이 있어서 비교 횟수가 22번뿐이야. (나 vs 나머지 22명)
두 번째는 모든 사람이 모든 사람과 비교돼.
23명 중에서 2명을 뽑는 경우의 수를 세어보자.
C(23, 2) = 23 × 22 ÷ 2 = 253쌍
22번이 아니라 253번의 비교가 동시에 일어나고 있었던 거야.
비교 횟수가 11배 넘게 차이 나니까, 확률도 당연히 폭발적으로 커지지.
핵심은 이거야. 사람 수 n이 늘어날 때 쌍의 개수는 n²에 비례해서 늘어난다는 것.
사람은 선형으로 늘어나는데 관계는 제곱으로 늘어난다. 이게 생일 역설의 엔진이야.
✏️ 진짜 계산: 여집합이라는 마법
자, 이제 실제로 계산해보자. 어렵지 않아. 곱셈만 할 줄 알면 돼.
1단계 — 문제를 뒤집기
"생일이 겹치는 사람이 적어도 한 쌍 있을 확률"을 직접 구하려면 지옥이 열려.
두 명 겹치는 경우, 세 명 겹치는 경우, 두 쌍이 각각 겹치는 경우... 경우의 수가 미쳐 날뛰거든.
그래서 우리는 반대쪽을 구해.
P(겹침 있음) = 1 − P(전원 생일이 전부 다름)
"모두 다르다"는 계산이 훨씬 쉬워. 딱 한 가지 시나리오뿐이니까.
이게 확률 문제 풀이의 기본기 중의 기본기인 여사건(여집합) 활용이야.
2단계 — 한 명씩 방에 들여보내기
가정은 이렇게 잡자. (나중에 이 가정들이 얼마나 영향을 주는지도 따져볼 거야)
① 1년은 365일 (윤년 무시)
② 모든 날짜에 태어날 확률이 동일
③ 쌍둥이 같은 상관관계 없음
이제 사람을 한 명씩 방에 넣어볼게.
1번 손님 — 방이 비어 있음. 아무 날이나 OK.
겹치지 않을 확률 = 365/365 = 1
2번 손님 — 1번의 생일 하루만 피하면 됨.
= 364/365 ≈ 0.99726
3번 손님 — 이미 있는 2개 날짜를 피해야 함.
= 363/365 ≈ 0.99452
...
23번 손님 — 22개 날짜를 피해야 함.
= 343/365 ≈ 0.93973
이걸 전부 곱하면 "23명 전원의 생일이 다 다를 확률"이 나와.
P(전부 다름) = (365/365) × (364/365) × (363/365) × … × (343/365)
= 0.492703…
그러면 답은?
P(겹침 있음) = 1 − 0.4927 = 0.507297 ≈ 50.73%
봤지? 초등학교 곱셈만으로 끝났어.
포인트는 0.99, 0.98, 0.97… 처럼 1보다 살짝 작은 수를 22번 곱하면 생각보다 훨씬 작아진다는 거야.
사람들은 0.997 같은 수를 여러 번 곱해도 별 차이 없을 거라 느끼는데, 22번 곱하면 절반 아래로 내려가버려.
3단계 — 팩토리얼로 깔끔하게
수학적으로 예쁘게 정리하면 이렇게 돼.
P(겹침 없음) = 365! / ( (365 - n)! × 365^n )
P(겹침 있음) = 1 - 365! / ( (365 - n)! × 365^n )
분자는 순열 365Pn, 즉 365일 중 n개를 순서 있게 뽑는 경우의 수.
분모 365ⁿ은 n명이 각자 아무 날이나 고르는 전체 경우의 수.
이 식 하나면 n이 몇이든 다 계산할 수 있어.
📊 인원수별 확률 표: 숫자로 보면 더 충격
직접 계산한 값들이야. 한번 쭉 훑어봐.
| 인원(n) | 겹침 확률 | 한마디 |
|---|---|---|
| 5 | 2.71% | 거의 없음 |
| 10 | 11.69% | 슬슬 시작 |
| 15 | 25.29% | 4번에 1번 |
| 20 | 41.14% | 코앞 |
| 22 | 47.57% | 아직 절반 미만 |
| 23 | 50.73% | 🎯 임계점 돌파 |
| 25 | 56.87% | 유리한 내기 |
| 30 | 70.63% | 반 학생 수 |
| 35 | 81.44% | 거의 확실 |
| 40 | 89.12% | 10번 중 9번 |
| 50 | 97.04% | 사실상 확정 |
| 57 | 99.01% | 99% 돌파 |
| 70 | 99.92% | 안 겹치면 뉴스감 |
| 100 | 99.99997% | 😇 |
| 366 | 100% | 비둘기집 원리 |
🐦 맨 아래 366명이 왜 100%일까?
날짜는 365개뿐인데 사람이 366명이면, 아무리 잘 배치해도 최소 한 칸엔 2명이 들어가야 해.
이걸 비둘기집 원리(Pigeonhole Principle)라고 불러.
기초 수학에서 가장 강력하면서도 가장 당연한 정리지.
여기서 재밌는 건, 100%가 되기 전에 이미 99%는 57명에서 달성된다는 점이야.
즉 366명까지 갈 필요도 없이, 한 반 인원의 두 배도 안 되는 57명이면 사실상 끝난다는 뜻.
곡선을 보면 알겠지만, 초반에 가파르게 올라가다가 40명쯤부터 천장에 딱 붙어버려.
이런 형태를 수학에서는 S자형(시그모이드) 성장이라고 불러.
⚡ 손으로 어림잡는 법: √n 규칙
매번 22번씩 곱하기 싫잖아? 그래서 근사식이 있어.
지수 근사
x가 아주 작을 때 1 − x ≈ e−x 라는 성질을 쓰면 이렇게 정리돼.
P(겹침 없음) ≈ exp( -n(n-1) / (2 × 365) )
P(겹침 있음) ≈ 1 - exp( -n(n-1) / 730 )
n=23을 넣어보면?
23 × 22 = 506, 506 ÷ 730 = 0.6931
e−0.6931 ≈ 0.5000
따라서 겹칠 확률 ≈ 50.0%. 실제값 50.73%와 거의 일치하지.
여기서 소름 돋는 포인트 하나.
ln 2 = 0.6931 인데, 506/730이 정확히 0.6931이야.
우연이 아니라, 50% 지점이 "지수가 ln2가 되는 곳"이기 때문이야.
수학이 이렇게 딱 맞아떨어지는 순간이 제일 짜릿해.
일반화: 날짜가 365일이 아니라면?
경우의 수가 N개일 때, 50% 충돌이 일어나는 인원수는 대략 이래.
n ≈ 1.1774 × √N
N=365를 넣으면 1.1774 × 19.105 ≈ 22.49 → 반올림하면 23명. 딱 맞지?
이 √N이 진짜 핵심이야.
사람들은 "N의 절반쯤은 모여야겠지"라고 생각하는데, 실제론 N의 제곱근 정도면 충분해.
| 가능한 경우 N | 50% 충돌 인원 ≈ 1.1774√N |
|---|---|
| 100 | 약 12 |
| 365 | 23 |
| 1,000 | 약 38 |
| 10,000 | 약 118 |
| 1,000,000 | 약 1,178 |
| 1억 | 약 11,775 |
100만 개 중에서 겹치는 걸 찾으려면 50만 명이 필요할 것 같지? 1,178명이면 반반이야.
이게 뒤에서 이야기할 보안 이슈의 출발점이 돼.
🔍 조건을 바꿔보자: 파생 문제들
① "나와" 생일이 같은 사람을 찾으려면?
앞에서 말한 착각 버전, 이건 실제로 몇 명이 필요할까?
나 말고 한 사람이 나와 생일이 다를 확률은 364/365.
P(나와 같은 사람 있음) = 1 − (364/365)k
이게 50%를 넘으려면 k ≈ 253명이 필요해.
23명 vs 253명. 11배 차이지.
재밌는 건 여기 또 253이라는 숫자가 나온다는 점인데,
이건 23명에서의 쌍 개수 253과 수치적으로 비슷할 뿐 원인이 다른 우연이야.
(365×ln2 ≈ 253 이라서 그래.) 이런 숫자 장난도 수학의 재미지.
② 생일이 "하루 차이"까지 인정한다면?
같은 날이 아니라 ±1일 이내면 축하 파티를 같이 할 수 있다고 치자.
그러면 필요한 인원은 확 줄어서 14명이면 50%를 넘겨.
7일 이내(같은 주)까지 넓히면 7명이면 충분해.
조건이 살짝 느슨해지는 것만으로도 확률이 폭발하는 게 보이지?
③ 세 명이 같은 날이어야 한다면?
이건 반대로 훨씬 빡세져.
3명이 같은 생일일 확률이 50%를 넘으려면 약 88명이 필요해.
4명이면 약 187명, 5명이면 약 313명.
| 조건 | 50% 돌파 인원 |
|---|---|
| 2명 생일 일치 | 23명 |
| 3명 생일 일치 | 88명 |
| 4명 생일 일치 | 187명 |
| 5명 생일 일치 | 313명 |
| ±1일 이내 2명 | 14명 |
| 나와 같은 생일 | 253명 |
④ 윤년(2월 29일)을 넣으면?
366일로 계산하면 확률은 미세하게 떨어져서 50.63% 정도.
사실 2월 29일은 4년에 한 번이라 확률 가중치가 1/4밖에 안 돼.
정확히는 1461일 주기(4년)로 계산해야 하는데, 결론은 23명에서 여전히 50%를 넘는다는 것. 결과가 안 바뀌어.
🌏 현실은 어떨까? 생일은 진짜 균등할까
여기서 진짜 팩트 체크를 해보자.
우리는 "모든 날짜가 동등하다"고 가정했는데, 현실은 전혀 그렇지 않아.
실제 출생 분포의 특징
• 대한민국을 포함한 많은 나라에서 1월 초에 출생신고가 몰림 (학령·병역 관련 신고 관행)
• 여름~초가을(7~10월)에 출생이 상대적으로 많은 경향
• 주말·공휴일에 출생 수가 뚜렷하게 적음 → 계획 분만·제왕절개 스케줄이 평일에 집중
• 미국 통계에서는 추석·크리스마스·설날 같은 명절 당일 출생이 눈에 띄게 적음
• 2월 29일은 당연히 압도적으로 희귀
그럼 이 불균등함이 생일 역설을 무너뜨릴까?
정반대야.
수학적으로 증명된 사실이 있어. 분포가 균등에서 벗어날수록 충돌 확률은 반드시 올라간다.
직관적으로 생각해봐. 만약 모두가 1월 1일에만 태어난다면? 2명만 모여도 100%지.
쏠림이 심할수록 겹치기 쉬워진다는 뜻이야.
즉 균등 분포 가정으로 계산한 50.73%는 현실에서의 최솟값이고, 실제로는 이것보다 조금 더 높아.
다만 실제 데이터로 보정해도 23명에서의 확률은 50.7~50.9% 수준이라 변화는 아주 미미해.
물론 예외 상황도 있어.
같은 반에 쌍둥이가 있으면? 그건 확률 문제가 아니라 확정이지.
또 특정 학년은 생일 범위가 제한돼 있어서(예: 3월~다음 해 2월), 실질적인 날짜 풀이 좁아지기도 해.
⚽ 현실에서 검증된 사례들
월드컵 축구팀
축구 국가대표 엔트리는 보통 23명이야. 생일 역설의 완벽한 실험장이지.
2014 브라질 월드컵 32개국 엔트리를 조사한 결과, 16개 팀에서 같은 생일을 가진 선수 쌍이 발견됐어.
32팀 중 16팀. 정확히 50%. 이론값과 소름 돋게 일치했지.
역대 미국 대통령
미국 대통령은 지금까지 40여 명. 이론상 겹칠 확률은 90% 가까이 돼.
실제로 제임스 포크(11대)와 워런 하딩(29대)이 둘 다 11월 2일생이야.
참고로 사망일이 겹치는 경우는 더 유명해. 존 애덤스와 토머스 제퍼슨이 같은 날(1826년 7월 4일) 세상을 떠났지.
교실에서 직접 해보기
한국 중고등학교 한 반은 보통 25~30명.
이 인원이면 겹칠 확률이 57~71%야.
학교 전체 10개 반을 조사하면, 평균적으로 6~7개 반에서 같은 생일 커플이 나온다는 뜻.
회식 자리에서 30명쯤 모였을 때 "여기 생일 같은 사람 있다에 만 원 건다"고 하면, 장기적으로 이득 보는 내기야.
🔐 생일 역설이 보안을 뒤흔든 이유
여기서부터가 진짜 실전이야. 생일 역설은 단순 퀴즈가 아니라 암호학의 기둥 중 하나거든.
해시 함수와 충돌
해시 함수는 어떤 길이의 데이터든 고정 길이의 지문으로 바꿔주는 장치야.
비밀번호 저장, 파일 무결성 검증, 블록체인, 전자서명... 안 쓰이는 데가 없어.
이때 서로 다른 두 데이터가 같은 해시값을 갖는 걸 충돌(collision)이라고 해.
충돌이 쉽게 발견되면 위조 문서를 진짜인 척 서명할 수 있으니까, 큰일 나는 거야.
생일 공격(Birthday Attack)
해시값이 n비트라면 가능한 값은 2n개.
직관적으로는 충돌 찾으려면 2n번 시도해야 할 것 같지?
그런데 생일 역설의 √N 법칙에 의해 약 2n/2번이면 절반의 확률로 충돌을 찾아.
보안 강도가 절반으로 깎인다
128비트 해시 → 실제 충돌 저항성은 64비트
256비트 해시 → 실제 충돌 저항성은 128비트
그래서 현대 암호 설계자들은 "128비트 보안을 원하면 최소 256비트 해시를 써라"고 말해.
SHA-256이 256비트인 이유가 바로 이거야. 생일 공격을 감안해서 두 배로 잡은 거지.
실제로 깨진 해시들
MD5(128비트)는 2004년 충돌이 실제로 만들어졌고, 지금은 노트북으로도 몇 초 만에 충돌을 찾아.
SHA-1(160비트)도 2017년 구글과 CWI가 SHAttered 공격으로 실제 충돌 PDF 두 개를 공개했지.
그래서 지금은 SHA-256, SHA-3 같은 더 긴 해시가 표준이 된 거야.
UUID는 왜 안전할까?
UUID v4는 122비트 랜덤이라 약 5.3×10³⁶가지가 있어.
생일 역설을 적용하면 50% 충돌까지 약 2.7×10¹⁸개를 만들어야 해.
초당 10억 개를 만들어도 수십억 년이 걸리는 규모라, 실무에서는 "사실상 충돌 없음"으로 취급해.
중요한 건 "절대 안 겹친다"가 아니라 "겹칠 확률이 무시할 만큼 작다"는 표현이라는 점이야.
이게 확률적 사고의 핵심이지.
💻 직접 확인해보기: 30초 시뮬레이션
수식이 못 미덥다면 컴퓨터한테 시켜보면 돼. 이게 몬테카를로 시뮬레이션이야.
import random
def simulate(n, trials=200000):
hit = 0
for _ in range(trials):
days = [random.randint(1, 365) for _ in range(n)]
if len(set(days)) < n: # 중복이 있으면 집합 크기가 줄어듦
hit += 1
return hit / trials
def exact(n):
p = 1.0
for i in range(n):
p *= (365 - i) / 365
return 1 - p
for n in [10, 20, 23, 30, 50]:
print(n, "명 | 이론:", round(exact(n), 4),
"| 실험:", round(simulate(n), 4))
돌려보면 이론값과 실험값이 소수점 셋째 자리까지 붙어.
엑셀로도 가능해. =1-FACT(365)/(FACT(365-23)*365^23) 는 오버플로가 나니까,
=1-PRODUCT((365-ROW(INDIRECT("0:22")))/365) 같은 배열 수식을 쓰면 돼.
이런 식으로 이론 → 코드 → 검증으로 이어지는 흐름을 몸에 익히는 게 기초 수학 공부의 진짜 목적이야.
재능넷의 '지식인의 숲'에서도 이렇게 수학 개념을 시각화하고 직접 실험해보는 콘텐츠를 계속 다루고 있으니, 통계·확률이 어렵게 느껴졌다면 코드 한 줄로 확인해보는 습관부터 들여보길 추천해.
🧩 생일 역설이 가르쳐주는 사고법
① "우연의 일치"는 생각보다 흔하다
길에서 초등학교 동창을 만나면 "세상 진짜 좁다"고 하지.
하지만 여러분이 일생 동안 만나는 사람 수 × 그들이 겹칠 수 있는 관계의 수를 계산해보면,
이런 일이 안 일어나는 게 더 이상해.
통계학자 퍼시 다이아코니스는 이걸 충분히 큰 수의 법칙(Law of Truly Large Numbers)이라고 불렀어.
"표본이 충분히 크면, 아무리 희한한 일도 반드시 일어난다."
② 질문을 정확히 정의하라
생일 역설에서 사람들이 틀리는 근본 원인은 계산 실력이 아니라 질문을 잘못 읽은 것이었어.
"나와 같은"과 "아무나 둘이 같은"의 차이.
수학 문제든 실무 데이터 분석이든, 문제 정의가 절반 이상이야.
③ 선형 직관 vs 제곱 현실
인간의 뇌는 선형적인 것에 최적화돼 있어.
사람이 2배가 되면 관계도 2배일 거라 생각하지만, 실제로는 약 4배가 돼.
이 n² 감각은 네트워크 효과, 전염병 확산, 데이터 중복 탐지 등 곳곳에서 똑같이 작동해.
④ 여집합으로 생각하기
"적어도 하나"라는 말이 나오면 무조건 반대쪽부터 계산해봐.
이건 확률 문제에서 90% 이상 통하는 필승 전략이야.
🎯 오늘의 3줄 요약
1. 23명 → 253쌍. 비교 횟수가 n²로 폭증한다.
2. 1 − (364/365)(363/365)…(343/365) = 50.73%
3. 50% 충돌 인원 ≈ 1.1774√N. 이게 생일 공격의 원리다.
🎈 마무리
생일 역설이 멋진 이유는, 초등 수준의 곱셈만으로 우리 직관을 완전히 박살낸다는 점이야.
어려운 정리도, 복잡한 기호도 필요 없어. 그냥 분수를 22번 곱하면 끝.
그런데 그 결과가 우리가 매일 쓰는 인터넷 보안의 설계 기준이 되고 있지.
기초 수학이 왜 중요하냐고 묻는다면, 답은 여기 있어.
기초가 얕아서 시시한 게 아니라, 밑에 깔려 있어서 모든 걸 떠받치고 있는 거야.
이번 주말 모임에 20명 넘게 모인다면, 슬쩍 물어봐.
"여기 생일 같은 사람 있나 확인해볼까?"
수학이 여러분 편에 서 있을 거야. 🎂
댓글 0
지식인의 숲 - 지적 재산권 보호 고지
지적 재산권 보호 고지
- 저작권 및 소유권: 본 컨텐츠는 재능넷의 독점 AI 기술로 생성되었으며, 대한민국 저작권법 및 국제 저작권 협약에 의해 보호됩니다.
- AI 생성 컨텐츠의 법적 지위: 본 AI 생성 컨텐츠는 재능넷의 지적 창작물로 인정되며, 관련 법규에 따라 저작권 보호를 받습니다.
- 사용 제한: 재능넷의 명시적 서면 동의 없이 본 컨텐츠를 복제, 수정, 배포, 또는 상업적으로 활용하는 행위는 엄격히 금지됩니다.
- 데이터 수집 금지: 본 컨텐츠에 대한 무단 스크래핑, 크롤링, 및 자동화된 데이터 수집은 법적 제재의 대상이 됩니다.
- AI 학습 제한: 재능넷의 AI 생성 컨텐츠를 타 AI 모델 학습에 무단 사용하는 행위는 금지되며, 이는 지적 재산권 침해로 간주됩니다.

댓글 작성
이 글에 대한 여러분의 생각을 들려주세요
로그인이 필요합니다
댓글을 작성하려면 먼저 로그인해주세요.