我正在從自動化無聊的東西課程中做硬幣翻轉挑戰。我必須計算總共出現 100 次連續出現 6 次正面或 6 次反面的幾率。
因此,第一步是生成一個串列,其中每個專案分配為 H 或 T,因此在第二步中,我們可以在串列中搜索 6 個條紋。當我開始使用 python 和編碼時,當我遇到挑戰時,我喜歡進行練習。使用我知道制作最終程式所需的概念撰寫一個小程式。
import random
Heads=0
Tails=0
exper=[]
for i in range(10):
if random.randint(0, 1)==0:
exper.append('H')
Heads=Heads 1
if random.randint(0, 1)==1:
exper.append('T')
Tails = Tails 1
print (exper)
print (Heads)
print(Tails)
所需輸出的示例類似于
['H','T','H','T','H','T','H','T','H','T']
我不知道我是否做錯了什么,但它應該可以正常作業。我的輸出是一個包含 T 和 H 的串列,但串列的長度是隨機的……有時它的串列有 2 個專案,其他專案有 10 個,甚至 14 個。
在此先感謝,我希望我已經解釋清楚了。這個網站的第一個問題。
uj5u.com熱心網友回復:
您random.randint在回圈的每次迭代中呼叫兩次。有可能每個都產生 1 或 0。考慮一下如果第一次呼叫random.randint產生 a0并且下一個呼叫產生 a 會發生什么1。這將導致在回圈的同一迭代中將 anH和 aT都附加到串列中。相反的情況也可能發生,導致沒有附加值。
因此,在回圈的每次迭代中,您可以附加零、一個或兩個值。因為如果它不是正面,它必須是反面,一個選擇是添加一個else而不是另一個呼叫random.randint.
import random
Heads=0
Tails=0
exper=[]
for i in range(10):
if random.randint(0, 1)==0:
exper.append('H')
Heads=Heads 1
else: # if it's not heads, it must be tails
exper.append('T')
Tails = Tails 1
print (exper)
print (Heads)
print(Tails)
應該始終產生 10 個值:
['T', 'T', 'T', 'H', 'H', 'H', 'T', 'H', 'T', 'H']
5
5
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/487218.html
上一篇:用字典中的值求和(Python)
下一篇:為預測任務生成子集資料的滑動視窗
