題目描述:有3扇關閉的門,一扇門後面停著汽車,其餘門後是山羊,只有主持人知道每扇門後面是什麼。參賽者可以選擇一扇門,在開啟它之前,主持人會開啟另外一扇門,露出門後的山羊,然後允許參賽者更換自己的選擇。
作業要求如下,需在博文中回答如下問題,回答問題時,先複製題目,然後再換行書寫答案:
1、按照你的第一感覺回答,你覺得不換選擇能有更高的機率獲得汽車,還是換選擇能有更高的機率獲得汽車?或機率沒有發生變化?
答:我當時覺得肯定是不更換選擇 獲得汽車的概率高啊,因為最開始獲得汽車的概率是1/3,假如更換了的話肯定沒這麼高的概率啦。所以當老師說:「 覺得不更換選擇獲得汽車的機率更高的同學舉下手。」,我高高舉起的手微微顫抖。。。。
2、請自己認真分析一下「不換選擇能有更高的機率獲得汽車,還是換選擇能有更高的機率獲得汽車?或機率沒有發生變化?」 寫出你分析的思路和結果。
答:①這是參賽者不更換選擇的情況,假如參賽者相信自己的直覺不更換選擇的話,獲得汽車的概率是1/3;②這是參賽者更換選擇的情況,假如參賽者第一次選中了汽車門(概率1/3)並且換了的話,最終肯定是不能得到汽車的,故排除這種可能;③假如參賽者第一次選中的是羊門且選擇更換(由於主持人開啟了一扇羊門了,所以更換選擇後一定是車門),這種情況選中汽車門的總概率是2/3;額,這個就很尷尬啦,如果我這個分析沒錯的話嗎,仔細分析一波之後,和我最初的猜想不一樣。what the hell!!!
答:額,先說點廢話吧。我覺得我做這道羊車門問題還是挺失敗的。我看了這道題的題目之後,並沒有想著直接去啪嗒啪嗒地直接去敲鍵盤計算概率,而是想著先編寫**去模擬這個參賽者和主持人互動的這個過程,再來計算概率,沒辦法 這就是我這個lz的解題思路。個人感覺真的是很艱辛的,一點一點地去試錯。然後再在這個基礎之上去計算概率。在模擬參賽者和主持人互動的這個過程中,我這個python小白新學會了random.sample(list,n)去在列表list中隨機獲取n個元素組成片段。直接結合**旁邊的注釋去理解我這個lz的思路吧,真的是嘔心瀝血地敲(xie)**(bug),現在已經是凌晨啦,關鍵還是我太菜了,一道這種題居然要這麼久才能解決。
4、我的**。
1下面來看計算概率的那段**,為了節省計算時間,我只算了更換選擇後抽中汽車的概率,因為與它對立的一定就是沒有更換選擇的情況下抽中汽車的概率。#假設有3扇門,序號為1,2,3,根據參賽者輸入的數字來開門2#
假設使用者輸入非常友好啊,不會非法輸入,所以小白這段**沒有健壯性3#
coding: utf-8
4import random as rd #
引入隨機數
5print("
已知有3扇關閉的門,序號為1,2,3,一扇門後面停著汽車,其餘門後是山羊")
6 l = [1,2,3] #
列表l內的元素表示3個門
7 car = rd.randint(1,3) #
在1,2,3這三扇門之間產生隨機數
8 x = eval((input("
請選擇參賽者想要開的門:
"))) #
x為參賽者他選擇的門
9 l.remove(x) #
主持人在開啟參賽者選擇的門前,會先開啟另外一扇門
10if x != car: #
防止參賽者選擇的門正好是車門,但x已不在列表的情況
11 l.remove(car) #
主持人已經知道了哪個是車門,且依據題意,第一次不會開啟那扇車門,會開啟一扇羊門
12 s = rd.sample(l,1) #
從列表l中隨機獲取5個元素,作為乙個片斷s返回,這樣可以防止x=car時,列表l中還存在兩個值
13for i in s: #
i為主持人要開啟的那扇門
14 y = i #
y為主持人第一次開啟的那扇門
15print("
主持人開啟了第{}扇門,露出了門後的山羊
".format(y)) #
主持人開啟所謂的另外一扇門,露出門後的山羊
16 l = [1,2,3] #
列表l內的元素表示3個門
17 n = input("
參賽者是否更換選擇:1.更換選擇 2.不更換,相信自己的直覺")
18if n == 1: #
若參賽者更換選擇
19 l.remove(x) #
參賽者要求更換選擇,所以不可能取到再在列表l中取到當初輸入的那個數x
20 l.remove(y) #
主持人已經開啟了這扇門,所以也不可能再取到
21for j in l: #
j為參賽者更換選擇後 他所選擇的那扇門
22print("
參賽者更換了選擇,主持人開啟了參賽者選擇的第{}扇門
".format(j))
23if j == car: #
判斷參賽者最終選擇的門是否為車門
24print("
參賽者獲得了汽車")
25else:26
print("
很遺憾,這扇門後面是山羊")
27if n == 2: #
若參賽者沒有更換選擇,相信自己的直覺
28print("
參賽者沒有更換選擇,主持人開啟了參賽者選擇的第{}扇門
".format(x))
29if x ==car:
30print("
參賽者獲得了汽車")
31else:32
print("
很遺憾,這扇門後面是山羊
")
1啊呀呀,終於寫完了,1點51啦 快2點啦,終於可以睡覺覺啦,雖然明天第一節就是體測,心疼我的室友,茶軸啪嗒啪嗒的敲擊聲。。。。#假設有3扇門,序號為1,2,3,根據參賽者輸入的數字來開門2#
假設使用者輸入非常友好啊,不會非法輸入,所以小白這段**沒有健壯性3#
coding: utf-8
4import random as rd #
引入隨機數
5 times = 100000 #
在此處定義迴圈次數,便於更換迴圈次數
6 count = 0 #
用total來記錄參賽者更換選擇後抽中汽車的次數
7print("
已知有3扇關閉的門,序號為1,2,3,一扇門後面停著汽車,其餘門後是山羊")
8 car = rd.randint(1,3) #
在1,2,3這三扇門之間產生隨機數
9for k in
range(times):
10 l = [1,2,3] #
列表l內的元素表示3個門
11 x = rd.choice(l) #
x為參賽者他選擇的門
12for a in range(1,4):
13if a ==x:
14 l.remove(a) #
主持人在開啟參賽者選擇的門前,會先開啟另外一扇門
15if a != car: #
防止參賽者選擇的門正好是車門,但x已不在列表的情況
16 l.remove(car) #
主持人已經知道了哪個是車門,且依據題意,第一次不會開啟那扇車門,會開啟一扇羊門
17 s = rd.sample(l,1) #
從列表l中隨機獲取5個元素,作為乙個片斷s返回,這樣可以防止x=car時,列表l中還存在兩個值
18for i in s: #
i為主持人要開啟的那扇門
19 y = i #
y為主持人第一次開啟的那扇門,露出門後的山羊
20 l = [1,2,3] #
列表l內的元素表示3個門
21 n = rd.randint(1,2)#
參賽者是否更換選擇:1.更換選擇 2.不更換,相信自己的直覺
22if n == 1: #
若參賽者更換選擇
23 l.remove(x) #
參賽者要求更換選擇,所以不可能取到再在列表l中取到當初輸入的那個數x
24 l.remove(y) #
主持人已經開啟了這扇門,所以也不可能再取到
25for j in l: #
j為參賽者更換選擇後 他所選擇的那扇門
26if j == car: #
判斷參賽者最終選擇的門是否為車門
27 count += 1 #
參賽者更換選擇後抽中汽車
28 p1 = count / times #
參賽者更換選擇後抽中汽車的概率
29 p2 = 1 - p1 #
參賽者沒有更換選擇抽中汽車的概率
30print("
參賽者更換選擇後抽中汽車的概率為{},沒有更換選擇直接抽中汽車的概率為{}
".format(p1,p2))
python羊車門問題 羊車門問題python模擬
題目描述 有3扇關閉的門,一扇門後面停著汽車,其餘門後是山羊,只有主持人知道每扇門後面是什麼。參賽者可以選擇一扇門,在開啟它之前,主持人會開啟另外一扇門,露出門後的山羊,然後允許參賽者更換自己的選擇。作業要求如下,需在博文中回答如下問題,回答問題時,先複製題目,然後再換行書寫答案 1 按照你的第一感...
羊車門問題
羊車門問題描述 有3扇關閉的門,一扇門後停著汽車,另外兩扇門後是山羊,主持人知道每扇門後是什麼。參賽者首先選擇一扇門。在開啟它之前,主持人會從另外兩扇門中開啟一扇門,露出門後的山羊。然後允許參賽者更換自己的選擇。請問,參賽者更換選擇後,能否增加猜中汽車的機會?通過設計並編寫程式驗證,並給出自己的解釋...
羊車門問題
1 換的機率比較大 2 換的機率比較大,因為不換的話只有抽到車的時候正確,概率為1 3,換的話抽到羊的時候正確,概率為2 3 3 支援了,換抽到車的機率為0.33,不換機率為0.66 4 usr bin env python coding utf 8 import random import sys...