LoginSignup
1
1

モンティ・ホール問題を愚直にやらない

Posted at

趣旨

こちらの記事を拝見したときに、自分だったらどうするかなと思い、
要件を詰めたら、思ったより簡単な判断式になったので、共有。
https://qiita.com/bkh4149/items/93adeaa46c77efb8ae73
(参考ありがとうございました!)

コード

from random import randint

def do(user_change: bool):
    correct = randint(0, 2)
    user = randint(0, 2)

    # 変えない場合、そのまま
    if user_change == False:
        return correct == user

    # 変える場合
    # 最初が当たっている場合、→必ず外れる
    # 最初が外れている場合、→必ずあたる
    return correct != user

from tqdm import tqdm

result_1 = [do(False) for x in tqdm(range(0, 1000000))]
result_2 = [do(True) for x in tqdm(range(0, 1000000))]

hit_1 = [x for x in result_1 if x] 
hit_2 = [x for x in result_2 if x]

print('------')
print(f'{len(hit_1)}/{len(result_1)}')
print('------')
print(f'{len(hit_2)}/{len(result_2)}')
100%|██████████| 1000000/1000000 [00:01<00:00, 633529.37it/s]
100%|██████████| 1000000/1000000 [00:01<00:00, 630403.13it/s]
------
333092/1000000
------
666834/1000000

考察

コメントにもあるように、扉を変える場合は、
最初が当たっている場合(1/3)、必ず、はずれ。
最初が外れている場合(2/3)、必ず、あたり。
なので、変える方がお得。

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1