누군가 당신과 생일이 같아야만 방 안에 일치가 생기는 것은 아니다.
모든 사람이 365일 중 생일을 독립적이고 균등하게 고른다고 상상하자. 윤일, 계절, 가족 관계를 제외한 단순한 세계다. 특별한 연결이 없어도 23명이 모이면 생일이 같은 사람이 적어도 한 쌍 있을 가능성이 절반을 넘는다. 적은 수처럼 느껴지는 이유는 사람을 세기 때문이다. 질문이 세는 것은 쌍이다.
사람 수뿐 아니라 우연이 일어날 기회도 세어 보자.
나와 같은 생일과 누구든 같은 생일
당신과 생일이 같은 사람이 있는지 묻는다면 가능한 상대는 22명이다. 각각 작은 일치 확률을 제공한다. 그러나 익숙한 생일 문제는 모든 사람이 서로 짝을 이룰 수 있게 한다. 방 건너편 두 사람의 생일이 당신과 달라도 그들끼리 같으면 사건은 성립한다.
23명은 23 × 22 ÷ 2, 즉 253쌍을 만든다. 갑과 을, 을과 갑을 중복해서 세지 않으려고 2로 나눈다. 22번보다 훨씬 많은 기회다. 다만 253에 1/365를 곱한 값이 정확한 확률은 아니다. 여러 쌍의 일치 사건은 겹칠 수 있다.
일치가 없는 방부터 계산하기
첫 사람의 생일은 어느 날이어도 된다. 둘째가 겹치지 않으려면 365일 중 364일이 남는다. 셋째는 이미 차지한 이틀을 피해야 하므로 363일이 남는다. 이 비율들을 차례로 곱하면 모두 다른 확률이 된다. 이를 1에서 빼면 적어도 한 번 겹칠 확률을 얻는다.
23명에서는 정확히 약 50.7297%, 40명에서는 89.1232%다. 이는 사건의 확률이지 같은 생일 쌍이 몇 개 생길지에 대한 예측이 아니다. 한 쌍이 있는 방도 세 명이 겹치는 방도 같은 사건을 만족한다. 그래프를 읽을 때 이 둘을 구별해야 질문이 바뀌지 않는다.

가상 방을 많이 만들어 보기
로컬 실험은 네 가지 인원수마다 방을 20,000개 만들었다. 각 방의 생일 숫자를 정렬한 뒤 이웃한 값이 같은지 검사했다. 정렬은 생일을 바꾸지 않으면서 중복을 쉽게 찾게 한다. 고정된 의사난수 시드를 사용해 이번 실행을 재현할 수 있다.
23명일 때 모의 방의 50.275%에서 일치가 나타났다. 정확한 50.7297%와 조금 다르다. 40명에서는 88.72%였다. 유한한 모의실험이 수식과 마지막 자릿수까지 일치할 필요는 없다. 표본 변동이 있으며 다른 난수 흐름에서는 비율도 조금 바뀐다.

실제 생일은 달력에 균등하지 않다
계산은 모든 날의 확률이 같고 사람끼리 독립이라고 가정한다. 실제 생일에는 계절적 패턴이 있고 친척이나 쌍둥이를 골랐다면 의존성이 생길 수 있다. 2월 29일을 같은 생일로 어떻게 취급할지도 정해야 한다. 이번 실험에는 이런 요소가 없다.
독립성을 유지하고 날짜 수가 같다면 불균등한 확률은 균등한 달력보다 두 사람의 일치를 쉽게 만들 수 있다. 의존성은 더 복잡하므로 추측 대신 명시해야 한다. 비율을 해석하기 전에 표본 추출 규칙을 적는 습관이 유용하다. 모형에 정확한 답도 현실 모임에는 근사일 수 있다.
드문 사건도 기회가 많으면 흔해진다
반복 식별자, 우연한 유사성, 수많은 비교를 생각할 때도 같은 셈법이 도움이 된다. 지정한 한 쌍의 확률이 작다는 사실만으로는 부족하다. 서로 만날 수 있는 쌍이 얼마나 많은지 알아야 한다. 규모가 커지면 기회는 항목 수보다 훨씬 빠르게 늘어날 수 있다.
이 비유가 생일 계산을 보안 보증이나 수상한 우연의 판별법으로 만들지는 않는다. 시스템마다 결과 공간과 의존성, 결과의 중요성이 다르다. 여기서 얻을 교훈은 단순하다. 우연을 놀랍다고 판단하기 전에 그것을 발견할 기회가 몇 번 있었는지 묻자. 답을 알면 사건의 느낌도 달라질 수 있다.
더 읽어 보기
OpenStax: probability rules and complements ↗NumPy: uniform integer sampling ↗Python: products with math.prod ↗공식 문서와 함께 읽으면 좋은 자료입니다.
