몇 명을 만나 보고 정해야 최고의 사람을 만날까: 37%의 법칙
좋은 사람, 좋은 일자리, 좋은 집은 "충분히 둘러본 뒤" 정하라고들 합니다. 그런데 얼마나 둘러봐야 충분할까요? 한 명 만나고 바로 정하면 기준이 없고, 끝까지 기다리면 이미 최고를 지나쳐 보냈을 수 있습니다. 놀랍게도 이 문제에는 수학적으로 가장 좋은 멈출 때가 있습니다. 후보가 많을 때 약 37%를 지켜보기만 하고, 그 뒤 처음으로 "지금까지 본 누구보다 나은" 후보를 고르는 것입니다. 그래도 최고를 만날 확률은 36.8% 정도에 그칩니다. 직접 돌려서 확인해 보세요.
모델은 이렇게 움직입니다
- 후보 n명이 무작위 순서로 한 명씩 나타납니다. 각자에게는 점수가 있지만, 당신은 지금까지 본 사람들과 비교한 순서만 알 수 있고(점수 높을수록 좋음), 한 번 지나친 사람은 되돌릴 수 없습니다. 후보는 사람, 일자리, 집 무엇으로 읽어도 됩니다.
- 전략은 하나입니다. 처음 r명(관찰 구간)은 점수를 기억만 하고 모두 거절합니다. 그다음부터는 지금까지 본 모든 후보보다 점수가 높은 첫 후보를 바로 고릅니다. 끝까지 그런 후보가 없으면 마지막 후보를 받아야 합니다.
- 성공은 기본적으로 "전체에서 가장 높은 점수를 가진 후보를 고른 것"입니다. 아래 선택 상자에서 상위 2명이나 3명까지 성공으로 치는 기준을 고를 수도 있습니다. 슬라이더는 후보 수 n과, 관찰 구간의 비율(r÷n)입니다.
직접 돌려보기
① 후보를 한 명씩 만나 보기
각 칸이 후보 한 명이고 숫자는 점수입니다(높을수록 좋음). 주황 막대는 관찰 구간(거절만), 파랑 막대는 선택 구간입니다. 별(★)은 지금까지 본 최고이고, 파랗게 채워진 칸이 고른 후보입니다. 한 판이 끝나면 아직 못 만난 후보가 공개되고 진짜 최고에 금색 테두리가 둘러집니다.
② 얼마나 지켜보면 최고를 만날까
가로는 관찰 구간의 비율, 세로는 성공할 확률입니다. 선은 정확한 값, 점은 같은 설정을 600번씩 돌려 본 시뮬레이션입니다. 금색 점이 가장 높은 곳입니다. 너무 짧아도 너무 길어도 확률이 떨어지는 산 모양입니다.
③ 실패하는 두 가지 이유
최고 한 명을 목표로 할 때, 초록은 성공, 주황은 최고가 오기 전에 평범한 후보에게 먼저 멈춘 경우, 빨강은 최고를 관찰 구간에서 이미 지나쳐 보낸 경우입니다. 관찰이 짧으면 주황이, 길면 빨강이 커집니다.
④ 결국 누구를 고르게 될까
지금 설정으로 고른 후보의 순위 분포입니다(1위가 가장 좋음). 막대는 정확한 값, 검은 점은 4,000번 돌린 시뮬레이션, 검은 가로선은 아무렇게나 골랐을 때의 비율입니다. 최고는 못 만나도 상위권에 몰립니다.
이 결과가 말하는 것, 말하지 않는 것
말하는 것:
- 너무 일찍 고르면 비교할 정보가 모자라고, 너무 오래 보면 최고가 이미 지나가요. 전체의 37% 근처에서 멈출 때 최고를 뽑을 확률이 가장 컸어요.
- 후보 40명 중 15명(37%)을 지켜보면 37.6%, 4명(10%)만 보면 24.2%, 32명(80%)을 보면 18.1%였어요. 일찍은 기준 부족, 늦게는 이미 놓침으로 갈려요.
- 그렇다면 언제 고를까? 이 모델에선 전체의 37%쯤은 지켜보기만 하고, 그 뒤 그때까지의 최고보다 나은 첫 후보를 고르는 게 가장 좋았어요. 상위 3명이면 된다면 26%만 봐도 됐어요(후보 100명).
상세 설명
말하는 것: 후보 40명, 관찰 구간 37%(15명)에서 최고를 고를 확률은 정확히 37.6%였고, 상위 2명 안은 52.1%, 상위 3명 안은 59.0%였습니다. 아무렇게나 고르면 최고는 2.5%입니다. 고른 후보의 평균 순위는 9.0위로, 아무렇게나 고를 때(20.5위)보다 훨씬 높았습니다. 관찰을 줄이면 확률이 떨어졌습니다: 0명이면 2.5%, 4명(10%)이면 24.2%, 8명(20%)이면 33.2%였고, 늘려도 떨어졌습니다: 24명(60%)이면 31.2%, 32명(80%)이면 18.1%, 39명이면 다시 2.5%였습니다. 15명을 관찰할 때 실패 62.4% 가운데 37.5%는 최고가 관찰 구간에 있었고, 24.9%는 최고가 오기 전에 먼저 멈춘 경우였습니다. 가장 좋은 비율은 후보 수에 따라 조금 달랐습니다: 5명이면 2명(40%)에서 43.3%, 10명이면 3명(30%)에서 39.9%, 20명이면 7명(35%)에서 38.4%, 40명이면 15명(38%)에서 37.6%, 100명이면 37명(37%)에서 37.1%, 1,000명이면 368명(36.8%)에서 36.8%로 1/e에 닿았습니다. 상위 2명까지 성공으로 치면 후보 100명에서는 30명(30%) 관찰이 가장 좋아 52.0%, 상위 3명이면 26명(26%)에서 60.6%였습니다.
말하지 않는 것:
- 연애는 37%만 만나라는 처방이 아니에요. 이 모델은 후보 수를 미리 알고, 한 번 지나치면 되돌릴 수 없다고 가정해요.
- 후보 수를 모르거나 되돌아갈 수 있거나 상대도 나를 고를 때 얼마나 달라지는지는 이 모델이 보여 주지 않아서 따로 따져 봐야 해요.
상세 설명
말하지 않는 것: 실제 사람을 만나거나 일자리·집을 구하는 일은 이 모델과 다릅니다. 이 모델은 후보 수를 미리 알고, 후보를 한 번에 한 명씩 무작위 순서로 만나며, 지금까지 본 사람과의 상대 순위만 알 수 있고, 한 번 거절하면 영영 되돌릴 수 없다는 비서 문제의 이상화된 가정입니다. 현실에서는 후보를 몇 명 만날지 모르고, 되돌아갈 수도 있으며, 상대도 나를 고르고, 점수 하나로 사람을 줄 세울 수도 없습니다. 그래서 "연애는 37%까지만 만나고 정하라"는 처방이 아니라, 정해진 규칙 아래에서 멈추는 때를 수학으로 풀면 어떤 모양이 되는지 보여 주는 장난감 모델입니다. 후보가 많아져도 최고를 만날 확률이 36.8%에 머문다는 점도 기억할 만합니다.
이론적 근거와 구현 메모
- 모델의 뿌리: 비서 문제(최적 멈춤 문제, 결혼 문제)로 알려진 고전 문제입니다. 마틴 가드너가 1960년 『Scientific American』의 "Mathematical Games" 칼럼에서 대중에게 소개해 널리 알려졌고, Gilbert & Mosteller (1966), "Recognizing the Maximum of a Sequence", Journal of the American Statistical Association이 대표적인 수학적 분석으로 자주 인용됩니다. 누가 처음 풀었는지는 Ferguson (1989)이 정리한 대로 역사가 복잡합니다.
- 핵심 가정과 수식: 관찰 구간 r(≥1)일 때 i번째(i > r) 후보에서 멈출 확률은 r / (i(i−1))이고, 최고를 고를 확률은
P(r) = (r/n) × (1/r + 1/(r+1) + … + 1/(n−1))입니다. n이 크면 r/n = x에서P ≈ −x ln x이고, 이것은 x = 1/e ≈ 0.368에서 최대 1/e ≈ 36.8%가 됩니다. 슬라이더 "관찰 구간"은 x이고 "후보 수"는 n입니다. - 이 프로젝트의 단순화: 이 페이지는 원 문제의 이상화된 가정(후보 수를 알고, 상대 순위만 알고, 되돌릴 수 없음)을 그대로 따르면서, 끝까지 고르지 못하면 마지막 후보를 받는다는 규칙을 둡니다. "상위 2명, 3명까지 성공" 보기는 이 프로젝트가 덧붙인 변형이며 같은 한 번의 컷오프 규칙을 쓰므로 그 기준의 최적 전략이 아닐 수 있습니다. 점수의 크기는 이 프로젝트가 정한 값입니다.
- 이론값과 시뮬레이션: 정확한 값의 합은 모든 설정에서 1과 1e-14 안으로 맞았고, 1위 확률은 위 닫힌 식과 같았습니다. 30,000번씩 돌린 시뮬레이션은 정확한 값과 최대 0.71%p 차이였습니다. 최적 관찰 비율은 후보 100명에서 37%(37.1%), 1,000명에서 36.8%(36.8%)로 1/e와 맞았습니다.
- 더 읽을거리: Ferguson (1989), "Who Solved the Secretary Problem?", Statistical Science 4(3)가 역사를 다룬 읽기 쉬운 개설입니다. 그 밖에 위의 Gilbert & Mosteller (1966)와 Gardner의 1960년 칼럼을 보세요.
- 시뮬레이션은 시드 난수(mulberry32)를 쓰고 같은 시드면 같은 결과가 나옵니다. 점수는 전체 순위를 100점 만점으로 바꾼 값일 뿐이며 판단에는 순서만 쓰입니다. 컷오프 r은 후보 수 × 비율을 반올림한 값이고 0 이상 후보 수 - 1 이하로 맞춥니다.
- 정확한 값은 닫힌 식으로 계산하고(차트 ②~④의 선과 막대), 점은 시뮬레이션입니다. 검증은
node tools/validate-secretary.js로 할 수 있습니다.