Loading [MathJax]/jax/output/CommonHTML/jax.js
본문 바로가기

Math

N종류의 쿠폰을 모두 모으기 위한 뽑기 횟수의 기댓값

뽑기를 할 때마다 N종류의 쿠폰 가운데 하나가 무작위로 나오고, N종류의 쿠폰을 모두 모으면 상품을 주는 복권이 있다. N종류의 쿠폰을 모두 한 장 이상씩 모으기 위해서는 뽑기를 평균적으로 몇 번 해야 할까? 이는 매우 초보적인 조합론 문제이지만, 풀이 과정을 정리해 보려고 한다.

현재 가지고 있는 서로 다른 쿠폰의 개수를 X라고 하자. 초기에 X=0이고, X=N까지 가는 데의 뽑기 횟수 기댓값을 구해야 한다. 이는 X=k에서 X=k+1까지 가는 데의 기댓값 Ek을 모든 0kN1에 대해 더하면 된다.

이제 Ek를 계산하자. X=k이므로 하나를 뽑았을 때 아직 뽑지 않은 쿠폰일 확률은 (Nk)/N이다. 그러면 왠지 직감적으로 이걸 뽑기 위해서는 확률의 역수인 N/(Nk)개를 뽑아야 될 거 같다는 느낌이 든다. 이는 아래 접은글에서 증명해 두었다.

더보기

편의상 뽑지 않을 쿠폰일 확률 (Nk)/N를 p라고 두자.

j번 만에 되려면, 처음 j-1번에서는 1-p의 확률로 뽑은 쿠폰이 나와야 하고, 마지막에는 p의 확률로 아직 뽑지 않은 쿠폰이 나와야 한다. 그러므로 구하는 기댓값은 다음과 같다. Ek=j=1jp(1p)j1

이 식을 계산하기 위해, 항등식 j=1xj=x+x2+x3+...=x1x 의 양변을 미분하면, j=1jxj1=1+2x+3x2+...=1(1x)2

이 식에 x=1p를 대입하고 양변에 p를 곱하면 구하는 Ek 가 된다. Ek=p×1p2=1p=NNk

이제 Ek를 다 더하면, 구하는 기댓값 E는 E=N1k=0NNk=N(11+12+13+...+1N)

이다. 괄호 안은 직접 계산하기는 어렵지만, N이 클 때는 적분으로 근사할 수 있다. ENN+11dtt=Nln(N+1)NlnN

이렇게 해서 상품을 받으려면 뽑기를 N번만 하면 되는 것이 아니라, 평균적으로는 거기에 log N을 곱한 것만큼 해야 한다는 사실을 알게 되었다. N종류의 쿠폰을 모두 K(2)장씩 모으려면 몇 번의 뽑기를 해야 할까? K=1을 풀었으니 이제 일반화해서 풀어보고 싶다는 생각이 자연스럽게 드는데, 나는 초보적인 방법으로는 모르겠다. 나중에 알게 되면 다시 글을 올리도록 하겠다.