python羊车门问题_羊车门问题的python模拟和解释
一、問題描述
羊車門問題描述:有3扇關閉的門,一扇門后停著汽車,另外兩扇門后是山羊,主持人知道每扇門后是什么。參賽者首先選擇一扇門。在開啟它之前,主持人會從另外兩扇門中打開一扇門,露出門后的山羊。此時,允許參賽者更換自己的選擇。請問,參賽者更換選擇后,能否增加猜中汽車的機會?通過設計并編寫程序驗證,并給出自己的解釋。
二、問題分析
這個問題的難點在于選手改變選擇之后中獎概率的計算,其實我們可以用幾種思維方式來進行思考:
1.用對立事件的思維方式
因為不改變選擇中獎的概率為1/3,而改變和不改變是一對對立事件,因此改變之后中獎的概率為P
=
1
?
1
/
3
=
2
/
3
P=1-1/3=2/3P=1?1/3=2/3
2.用條件概率的思維方式
條件概率要分類討論,第一種情況是一開始猜對了,第二種情況是一開始猜錯了,那么我們可以根據條件概率公式很容易得出在修改選項之后中即將的概率為:
P
=
1
/
3
?
0
+
2
/
3
?
1
=
2
/
3
P=1/3*0+2/3*1=2/3P=1/3?0+2/3?1=2/3
3.枚舉法
我們可以枚舉各種可能的情況得到如下表格,特別要注意的是,如果猜對了,主持人的排除的可能有兩種,每一種排除的情況出現的概率都是沒有猜對時的1/2,因此我們要給其他情況數量加倍才能使得每一行是一個出現概率相等的事件。我們統計獲獎和沒有獲獎的次數,就很容易得出結論了
python模擬示例代碼
我們用以下代碼來模擬修改選項之后的中獎率:
import random
def right_if_change():
player_choices = ["A","B","C"]
host_choice = ["A","B","C"]
answer = random.choice(player_choices)
pick = random.choice(player_choices)
try:
host_choice.remove(answer)
host_choice.remove(pick)
except:
pass
host = random.choice(host_choice)
player_choices.remove(pick)
player_choices.remove(host)
new_pick = player_choices[0]
if new_pick == answer:
return True
else:
return False
count = 0
for i in range(1000):
if right_if_change():
count += 1
print(count/1000)
得到的結果是
真的是六翻了!
總結
以上是生活随笔為你收集整理的python羊车门问题_羊车门问题的python模拟和解释的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python核心数据类型_Python核
- 下一篇: 苹果什么时候发布M5MacBookPro