그냥 끄적거림

몬티홀의 딜레마란? (feat. 소스코드)

끄적잉 2024. 8. 8. 21:42
728x90

### 몬티 홀 문제 개요

몬티 홀 문제는 고전적인 확률 퍼즐로, 1960년대 미국의 TV 쇼 'Let's Make a Deal'에서 유래되었습니다. 이 퍼즐은 인간의 직관이 확률 문제를 얼마나 잘못 판단할 수 있는지를 보여줍니다. 문제는 다음과 같이 설정됩니다:

1. 참가자는 세 개의 문 중 하나를 선택합니다. 각 문 뒤에는 하나의 상품이 숨겨져 있으며, 두 문 뒤에는 염소가, 한 문 뒤에는 자동차가 있습니다.
2. 참가자가 문을 선택하면, 진행자인 몬티 홀이 참가자가 선택하지 않은 두 문 중 염소가 있는 문 하나를 엽니다.
3. 이제 참가자에게 선택한 문을 바꿀 기회를 줍니다. 이때, 참가자는 처음 선택한 문을 고수할지, 아니면 남은 다른 문으로 바꿀지 결정해야 합니다.

 


### 몬티 홀 문제의 확률 분석

#### 초기 선택의 확률

먼저, 참가자가 처음 선택하는 문이 자동차 뒤에 있을 확률은 다음과 같습니다:
\[ P(\text{자동차}) = \frac{1}{3} \]

참가자가 처음 선택한 문이 염소 뒤에 있을 확률은 다음과 같습니다:
\[ P(\text{염소}) = \frac{2}{3} \]

#### 몬티 홀의 행동

몬티 홀은 항상 참가자가 선택하지 않은 두 문 중 염소가 있는 문을 엽니다. 즉, 참가자가 처음 선택한 문이 자동차 뒤에 있든 염소 뒤에 있든, 몬티 홀은 항상 염소가 있는 문을 열 수 있습니다.

#### 선택을 바꿀 경우의 확률

이제 참가자가 문을 바꿀 경우와 바꾸지 않을 경우의 확률을 계산해보겠습니다.

##### 문을 바꾸지 않는 경우

- 처음 선택한 문이 자동차 뒤에 있을 확률은 1/3이므로, 이 경우 참가자는 자동차를 얻게 됩니다.
- 처음 선택한 문이 염소 뒤에 있을 확률은 2/3이므로, 이 경우 참가자는 염소를 얻게 됩니다.

따라서 문을 바꾸지 않을 경우 참가자가 자동차를 얻게 될 확률은 1/3입니다.

##### 문을 바꾸는 경우

이제 문을 바꾸는 경우를 고려해보겠습니다. 처음 선택한 문이 자동차 뒤에 있을 경우와 염소 뒤에 있을 경우로 나누어 생각해보겠습니다.

1. 처음 선택한 문이 자동차 뒤에 있는 경우 (확률: 1/3):
    - 참가자가 문을 바꾸면 염소를 얻게 됩니다.

2. 처음 선택한 문이 염소 뒤에 있는 경우 (확률: 2/3):
    - 참가자가 문을 바꾸면 남은 문은 자동차 뒤에 있으므로 참가자는 자동차를 얻게 됩니다.

따라서 문을 바꾸는 경우 참가자가 자동차를 얻게 될 확률은 2/3입니다.

### 결론

몬티 홀 문제의 결론은 참가자가 선택을 바꾸는 것이 훨씬 유리하다는 것입니다. 문을 바꾸면 자동차를 얻게 될 확률이 2/3으로, 바꾸지 않았을 때의 확률인 1/3보다 두 배 더 높습니다. 이 문제는 직관적으로 이해하기 어려운 경우가 많지만, 수학적 확률 분석을 통해 명확하게 설명할 수 있습니다.

 

 


### 시뮬레이션을 통한 검증

수학적 증명 외에도, 컴퓨터 시뮬레이션을 통해 이 문제를 검증할 수 있습니다. 수천 번의 시도에서 문을 바꿀 때와 바꾸지 않을 때의 성공 확률을 비교해보면, 앞서 설명한 확률이 실험적으로도 확인됩니다.

#### 파이썬을 이용한 시뮬레이션 코드 예제

```python
import random

def monty_hall_simulation(trials):
    switch_wins = 0
    stay_wins = 0
    
    for _ in range(trials):
        # 자동차가 숨겨진 문 설정
        car_door = random.randint(0, 2)
        
        # 참가자가 처음 선택한 문
        player_choice = random.randint(0, 2)
        
        # 진행자가 염소가 있는 문을 염
        remaining_doors = [door for door in range(3) if door != player_choice and door != car_door]
        monty_opens = random.choice(remaining_doors)
        
        # 참가자가 문을 바꾸는 경우
        switch_choice = [door for door in range(3) if door != player_choice and door != monty_opens][0]
        
        # 문을 바꾸는 경우의 결과
        if switch_choice == car_door:
            switch_wins += 1
        else:
            stay_wins += 1
    


    switch_prob = switch_wins / trials
    stay_prob = stay_wins / trials
    
    return switch_prob, stay_prob

# 시뮬레이션 실행
trials = 10000
switch_prob, stay_prob = monty_hall_simulation(trials)
print(f"문을 바꿀 때 승률: {switch_prob * 100:.2f}%")
print(f"문을 바꾸지 않을 때 승률: {stay_prob * 100:.2f}%")
```

이 코드는 문을 바꿀 경우와 바꾸지 않을 경우의 확률을 시뮬레이션을 통해 확인하는 예제입니다. 10,000번의 시도에서 각각의 확률을 계산하면, 이론적으로 도출한 결과와 일치하는 것을 확인할 수 있습니다.

 


### 결론

몬티 홀 문제는 확률과 직관의 차이를 극명하게 보여주는 흥미로운 퍼즐입니다. 수학적 분석과 시뮬레이션 결과 모두 참가자가 문을 바꾸는 것이 유리하다는 것을 명확히 보여줍니다. 이 문제는 단순해 보이지만, 실제로는 깊은 수학적 통찰을 필요로 하며, 많은 사람들이 직관적으로 잘못 이해하는 문제로 유명합니다. 이러한 문제를 통해 우리는 확률적 사고의 중요성을 다시 한 번 깨달을 수 있습니다.

728x90