簡體   English   中英

想知道在擲骰子到隨機生成的次數時出現了多少次雙6?

[英]Want to get to know how many times double 6 appeared while rolling the dice to randomly generated number of time?

我剛剛將結果保存為字符串,現在使用循環執行檢查,但如果結果中出現 66,它的無效計數器仍然為 0。

from random import *

trial = int(randint(1, 10))
print(trial)
result = ''
for i in range(trial):
    init_num = str(randint(1, 6))
    result += init_num
print(result)

last_dice = 0
counter = 0
for i in range(trial):
    if result[i] == 6 and last_dice == 6:
        counter += 1
        last_dice = 0
    else:
        last_dice = result[i]

print(counter)

if result[i] == 6

這個條件永遠不會成立,因為 'result' 中的值是一個字符串。 如果您將6更改為'6' ,它應該可以工作。

編輯

“擲骰子時出現雙 6 的次數”意味着骰子是成對滾動的。 實際上,您的腳本會將任意兩個連續的六點計為已滾動在一起。 例如,如果擲骰數為 4、6、6、5,您的腳本會將其視為雙六的實例,如果擲骰成對出現,則這是不准確的 出於這個原因,您應該成對生成隨機的 1-6 值,以便清楚何時將 6 實際滾動在一起。

您可以將“結果”創建為一個列表,其中每個項目是一對代表兩個骰子的數字:

results = [str(randint(1,6))+str(randint(1,6)) for i in range(randint(1, 10))]

您的“試驗”變量僅用於打印卷數。 如果每次擲骰子是一對骰子,則擲骰數等於上述“結果”列表中的項目數。 打印這個值不需要變量,只需要列表的長度:

print(len(results))

打印所有滾動結果的一種方法是作為一個易於閱讀的逗號分隔的滾動對值字符串,可以打印此列表,並將每個項目用逗號分隔:

print(','.join(results))

可以通過將值“66”出現在“結果”列表中的次數相加來計算雙六的數量:

print(sum(i == '66' for i in results))

整個腳本可以寫成:

from random import randint

results = [str(randint(1,6))+str(randint(1,6)) for i in range(randint(1, 10))]
print(len(results))
print(','.join(results))
print(sum(i == '66' for i in results))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM