2017-04-20 96 views
0

我剛剛開始使用Python,並遇到了一個問題。我正在寫一個函數來模擬硬幣翻轉。 當我編寫一些模擬代碼來測試randint函數時,它工作得很好,並返回了一個很好的隨機序列的頭部和尾部。我嘗試在我的程序中使用的代碼只返回h或t。randint一遍又一遍地返回相同的數字

import random 

coin_sequence = "hhththththhhhttthht" 
generated_sequence = "" #define generated_sequence 
length = len(coin_sequence) 
flip = random.randint(0, 1) 
for value in range(length): 
    if flip == 0: 
     generated_sequence = generated_sequence + "t" 
    else: 
     generated_sequence = generated_sequence + "h" 

print(generated_sequence) 

我可能犯了一些非常愚蠢的錯誤。誰能幫我?

+2

'randint()'只被詢問**一次**來產生一個數字。然後你再次檢查同一個號碼。 –

+0

您正在緩存'randint'的返回值,因此它永遠不會重新生成新的數字。您必須再次調用它以獲取新號碼 – Li357

回答

2

你只能叫random.randint()一次,在循環開始之前:

flip = random.randint(0, 1) 
for value in range(length): 
    # ... 

這個調用返回一個整數對象。不管最初產生的是什麼函數,在一個循環中一次又一次地檢查該整數不會改變它的值。

如果你想獲得新的隨機數,問random.randint()產生一個在循環

for value in range(length): 
    flip = random.randint(0, 1) 
    if flip == 0: 
     generated_sequence = generated_sequence + "t" 
    else: 
     generated_sequence = generated_sequence + "h" 

需要注意的是,你可以多一點簡潔寫循環使用:

for value in range(length): 
    flip = random.randint(0, 1) 
    generated_sequence += "t" if flip == 0 else "h" 
相關問題