몬티 홀 문제란 한 퀴즈 쇼에서 경품을 선택하는 방식에서 유래한 확률 문제이다.
경품의 선택 방식은 자동차 경품과 꽝을 의미하는 염소가 2마리 숨겨져 있는 세 개의 문이 있다. 퀴즈 쇼 참가자는 이 문들 중 하나를 고른다.(문을 열지 않고 기다린다.) 이때 퀴즈쇼 진행자는 참가자가 고르지 않은 두 문 중 자동차가 아닌 염소가 있는 문 하나를 열어 준다.(진행자는 어느 문 뒤에 자동차가 있는지 알고 있다.) 그리고 참가자에게 기존의 선택을 고수할지 다른 하나의 문으로 선택을 바꿀지 선택권이 주어진다. 이때 기존의 선택을 유지해야 할까 선택을 바꾸어야 할까?
세 개 중에 하나를 골랐고 선택권을 바꾸어도 동일한 확률일 것 같은 생각이 든다.
그러나 이 문제를 해설한 위키 페이지를 보면 선택권을 바꾸지 않은 경우는 경품을 받을 확률이 1/3 이고 선택권을 바꿀 경우 확률이 2/3 로 올라 간다고 설명하고 있다.
확률이 올라가는 이유는 경품의 위치를 알고 있는 진행자가 염소가 있는 문을 열어 꽝의 확률을 제거하였기 때문이라고 한다.
좀 더 쉬운 설명을 하자면 처음 선택 시 자동차를 고를 확률은 1/3, 염소를 고를 확률은 2/3 이므로 선택을 고수할 때에 처음 자동차를 고른 경우(1/3)에도 자동차를 획득할 확률은 1/3 이고 염소를 고른 경우(2/3)에서 여전히 선택을 고수 했으므로 염소를 고를 확률 역시 2/3 이다. 그러나 선택을 바꿀 경우 처음 자동차를 고른 경우(1/3) 선택권을 바꾸면 염소를 고르게 되므로 염소를 고를 확률이 1/3이 된다. 그리고 염소를 고른 경우(2/3)에 선택권을 바꾸면 이미 진행자가 나머지 염소가 들어 있는 문을 열었기 때문에 무조건 자동차를 고르게 되어 자동차를 고를 확률이 2/3 가 된다.
설명을 들으면 그런 것도 같지만 왠지 한켠으로는 선택권을 고수 하고 싶은 마음이 들기도 한다. 이런 고집스런 마음을 덜어내고자 몬티 홀 문제를 코드로 작성해 돌려보고 통계적으로 선택권을 바꾸는게 더 좋은지 직접 눈으로 확인해 보고 싶었다.
코드를 짜보자 먼저 3개의 문(byte 배열)을 준비하고 G(oat) 2개와 C(ar)를 랜덤하게 배치한다.
doors := [3]byte{'G', 'G', 'G'} // Goat
doors[rand.Intn(3)] = 'C' // Car
처음 선택은 세개의 문중 하나를 랜덤하게 선택한다.
firstSelection := rand.Intn(3)
처음 선택이 자동차(C)를 골랐다면 나머지 두개의 문중 하나를 랜덤하게 연다(openDoor). 처음 선택이 염소(G)를 골랐다면 나머지 하나의 문을 연다.
openDoor := -1
if doors[firstSelection] == 'C' {
r := rand.Intn(2)
for i := 0; i < 3; i++ {
if firstSelection == i {
continue
} else {
if r == 0 {
openDoor = i
break
}
r--
}
}
} else {
for i := 0; i < 3; i++ {
if i != firstSelection && doors[i] == 'G' {
openDoor = i
break
}
}
}
선택권을 바꾸는 경우(changeMind == true)는 나머지 하나의 문으로 secondSelection을 지정하고 그 문에 C가 있는지 확인해 결과를 리턴한다. 선택권을 바꾸지 않는 경우는 처음 선택(firstSelection)의 문에 C가 있는지 확인해 결과를 리턴한다.
if true == changeMind {
secondSelection := -1
for i := 0; i < 3; i++ {
if i != firstSelection && i != openDoor {
secondSelection = i
break
}
}
return doors[secondSelection] == 'C'
} else {
return doors[firstSelection] == 'C'
}
전체 코드는 여기에서 볼 수 있다.
위와 같은 코드를 선택권을 바꾸는 경우와 바꾸지 않는 경우에 각각 10000회를 실행해 자동차를 선택한 경우의 횟수를 보면 아래와 같이 선택권을 바꾼 경우가 약 2/3(약 66%) 정도의 확률로 자동차를 선택하는데 성공했다.
Monty Hall
Change mind false => 3379 / 10000 (33.790 %)
Change mind true => 6624 / 10000 (66.240 %)
처음 선택이 모두 옳은 것은 아니다. 옳지 않다는 것이 밝혀 지면 주저 없이 선택을 바꾸자. 살면서 몬티 홀 문제가 주어지면 자신 있게 선택권을 바꾸자!