본문 바로가기
BI

몬티홀 문제를 엑셀을 통한 몬테카를로 시뮬레이션으로 해결하기

by wizmusa 2017. 11. 13.

몬티 홀 문제(Monty Hall problem)는 미국의 TV 게임 쇼 《Let's Make a Deal》에서 유래한 퍼즐입니다. 퍼즐의 이름은 이 게임 쇼의 진행자 몬티 홀의 이름에서 따온 것입니다. 퍼즐의 내용은 다음과 같습니다.

 

세 개의 문 중에 하나를 선택하여 문 뒤에 있는 선물을 가질 수 있는 게임쇼에 참가했다. 사람이 예를 들어 1번 문을 선택했을 때, 게임쇼 진행자는 3번 문을 열어 문뒤에 염소가 있음을 보여주면서 1번 대신 2번을 선택하겠냐고 물었다. 참가자가 자동차를 가지려할 때 원래 선택했던 번호를 바꾸는 것이 유리할까?

 

 

이때 진행자는 자동차와 염소가 어떤 문에 있는지 알고 있기 때문에, 진행자가 자동차가 있는 문을 여는 일은 절대 발생하지 않습니다. (출처: 위키백과 https://ko.wikipedia.org/wiki/몬티_홀_문제)

 

위키백과에 나온 풀이법(조건부확률, 베이즈 정리)이 정석이지만[각주:1], 엑셀을 통한 몬테카를로 시뮬레이션으로 풀어 봅시다. 몬테카를로 시뮬레이션은 난수(랜덤값)를 만들어 함수 값을 추정하는 방법입니다. 제 블로그에서는 2017/08/07 - [BI] - 엑셀에서 몬테카를로 시뮬레이션으로 원주율 구하기 라는 글에서 다룬 적이 있습니다. 수학적 증명이 쉽지 않은 때에 난수 발생을 통해 현실을 시뮬레이션 함으로써 (근)미래를 예측하거나 해결방안을 도출하는 데에 사용합니다.

 

Excel

 

 

저는 위와 같이 엑셀 문서를 작성하여 몬티홀 문제 상황을 시뮬레이션 하고 성공률을 측정했습니다. 사용한 함수는 난수를 발생하는 RAND(), RANDBETWEEN() 외에는 IF(), AND(), OR()와 같은 조건문 밖에 없습니다.

 

열  수식 
A  =RANDBETWEEN(0, 1)
B  =IF(A5<1, RANDBETWEEN(0, 1), 0)
C  =IF(A5+B5>0, 0, 1)
E  =IF(A5=1, 1, IF(B5=1, 2, 3))

 

A열, B열, C열은 각각 1번 문, 2번 문, 3번 문을 상징하며 자동차가 있는 문을 난수로 설정했습니다. 30만 줄에 자동채우기 하세요. (시뮬레이션 30만 회인 셈)[각주:2] 1이라고 된 열이 자동차가 숨은 문입니다. E열에는 A~C열을 보기와 계산하기 편하게 문 번호를 표시했습니다. 실은 그냥 한 열에 =RANDBETWEEN(1, 3)이라고 해도 충분합니다.[각주:3]

 

열  수식 
F  =RANDBETWEEN(1, 3)
G  =IF(E5=F5, "처음 정답", "처음 오답")
H  =IF(AND(E5<>1, F5<>1), 1, IF(AND(E5<>2, F5<>2), 2, IF(AND(E5<>3, F5<>3), 3, )))

 

F열은 퀴즈 참가자가 선택한 문 번호이고, 1차 정답 여부는 G열에서 표시하며 H열은 사회자가 열어주는 문 번호입니다.

 

열  수식 
I  =IF(H5=1,IF(RAND()>0.5,2,3),IF(H5=2,IF(RAND()>0.5,3,1),IF(H5=3,IF(RAND()>0.5,1,2),)))
J  =IF(AND(F5=I5,E5=I5),"유지 정답", IF(AND(F5=I5,E5<>I5),"유지 오답", IF(AND(F5<>I5,E5=I5),"변경 정답","변경 오답")))

 

I열은 비교대상으로 넣어 보았습니다. 사회자가 문을 연 이후에도 별다른 판단을 하지 않고 생각 없이(랜덤) 연 문 번호이며, J열은 그 결과입니다. 딱히 중요하지 않으니, 헷갈리면 중요한 다음 열로 넘어가시길 바랍니다.

 

열  수식 
F  =IF(OR(AND(F5=1, H5=2),AND(F5=2, H5=1)),3, IF(OR(AND(F5=1, H5=3),AND(F5=3, H5=1)),2,1))
G  =IF(E5=K5, "의지변경 정답", "의지변경 오답")

 

K열은 사회자가 문을 연 이후에 무조건 처음 선택을 바꿔서 남겨진 문을 선택한 번호로서, L열은 그 결과입니다.

 

시뮬레이션한 결과는 아래와 같습니다.

 

1) 처음 정답률: 33.6%

2-1) 제안 받은 후, 랜덤유지 시 정답률: 16.8%           2-2) 제안 받은 후, 랜덤유지 시 오답률: 33.0%

3-1) 제안 받은 후, 랜덤변경 시 정답률: 33.3%           3-2) 제안 받은 후, 랜덤변경 시 오답률: 16.8%

4) 제안 받은 후, 의지변경 시 정답률: 66.4%

5) 제안 받은 후, 의지변경 시 오답률: 33.6%

 

처음 정답률은 짜기나 한 듯이 33%입니다. 엑셀의 난수발생 기능이 꽤 훌륭합니다. 난수를 30만 번이나 만들어서 그랬을 수도 있습니다. ☺ 2번과 3번 항목은 사회자가 문을 연 이후에도 동전 던지기를 해서 선택을 바꾸느냐 유지하느냐를 결정한 상황입니다. 역시 균등하게 성공률은 1/3입니다만 이 때에도 바꾸는 쪽이 성공률이 좋지요?

 

4번과 5번 항목은 사회자가 선택하지 않은 문 중 하나를 열자 무조건 최소 선택을 바꾸어 나머지 문을 연 결과입니다. 무조건 바꾸자 성공률이 66.4%나 됩니다. 2/3에 가까운 수치가 나옵니다.

 

자동차가 있을 확률은 조건부 확률과 베이즈 정리를 이용하여 계산
조건부 확률과 베이즈 정리를 이용한 증명

 

이제 여러분은 몬티홀 문제를 두고 논쟁이 벌어졌을 때에, 위와 같은 증명은 못하더라도 자신 있게 결론을 내버릴 수 있습니다.

 

 

"몬티홀 문제 그거, 30만 번 해보니까 2/3 확률로 무조건 바꾸는 게 낫더구만!"

 

엑셀 파일은 다음 링크에서 다운로드 받을 수 있습니다.

https://1drv.ms/x/s!Agk_f8uIr69wgpUp2XG1eSjCjGF17A

 

  1. (아마도) 단순한 설명이 더 있습니다.참가자가 선택한 문에서 자동차가 나올 확률은 1/3, 선택하지 않은 문에서 나올 확률은 다 합쳐서 2/3입니다. 때문에 사회자가 문을 하나 열었든 말든 참가자가 선택하지 않았던 쪽의 확률인 2/3은 변하지 않습니다. 그러므로, 바꿀 기회가 생기면 2/3 쪽으로 바꾸는 게 성공률이 높습니다. [본문으로]
  2. 컴퓨터가 느리면 자동계산 옵션을 끄거나, 행 수를 일단 줄이면 편합니다. 컴퓨터 성능이 좋으면 백만 줄로 진행해도 좋겠습니다. [본문으로]
  3. 길게 쓴 건 겉멋일 뿐. [본문으로]
반응형