확률에 관한 공부를 조금만 깊게 하면 한번쯤은 만나는 문제인듯 합니다.
몬티홀 게임, 몬티홀 딜레마 라고 불리는 이 문제의 법칙 및 순서는 아래와 같습니다.
- 각각의 3개의 문 뒤에는 염소 2마리, 자동차 1대 중 하나가 있다.
- 참가자는 하나의 문을 선택한다.
- 사회자는 선택되지 않은 문 중에 염소가 있는 문 하나를 공개한다.
- 참가자는 처음 선택한 문과 나머지 하나의 문 중에서 선택을 바꿀 기회를 얻는다.
- 이러한 상황일 경우 바꾸는 것이 좋을 것인가? 그대로 선택하는 것이 좋을 것인가?
이 문제는 (적어도 저에게) 딜레마라는 문제 답게 이해하기 힘들었습니다.
이 문제는 사실 아주 쉬운 문제입니다.
- 처음 고른 상품이 차 일 경우(1/3 확률) 사회자가 제외시킨 문을 제외하면 나머지는 무조건 염소
- 처음 고른 상품이 염소 일 경우(2/3 확률) 사회자가 제외 시킨 문을 제외하면 나머지는 무조건 차
라는 결과가 나옵니다.
이 문제를 알려주셨던 선생님의 표현을 빌려 쓰자면, 사회자가 선택한 문의 확률이 흡수 되었다고 할 수 있습니다.
var i = 0; var arr = ['goat','goat','goat']; var success = 0; var fail = 0; for(i = 0;i<100000;i++,arr=['goat','goat','goat']){ //자동차 랜덤 위치 var car = Math.floor(Math.random()*3); arr[car] = 'car'; //랜덤하게 선택 var choice = Math.floor(Math.random()*3); //염소위치 알려줌 do{ rm_index = Math.floor(Math.random()*3); }while(rm_index == car || rm_index == choice); //바꾼후 진행 choice = 3-(rm_index+choice); if(arr[choice] == 'car'){ success++; } else{ fail++; } } console.log("case : change") console.log("success " + success); console.log("fail " + fail);
결과는
success 33322
fail 66678
success 66660
fail 33340
success 33322
fail 66678
success 66660
fail 33340