我正在嘗試撰寫一個程式來計算隨機 100 次擲硬幣中最長的正面連續,能夠列印出擲硬幣的結果,但我不知道如何初始化最長連續的計數并繼續它,我是新手編程和python
import random
total_heads = 0
count = 0
while count < 100:
coin = random.randint(1, 2)
if coin == 1:
print("H")
total_heads = 1
count = 1``
elif coin == 2:
print("T")
uj5u.com熱心網友回復:
這應該可以解決問題:
import random
total_heads = 0
count = 0
longest_streak = 0
current_streak = 0
while count < 1000:
coin = random.randint(1, 2)
if coin == 1:
print("H")
total_heads = 1
current_streak = 1
count = 1
elif coin == 2:
print("T")
current_streak = 0
if current_streak > longest_streak:
longest_streak = count
print(longest_streak)
print(total_heads)
uj5u.com熱心網友回復:
from random import randint as r
heads_streaks = [0]
for i in range(100):
coin = r(0, 1)
if not coin:
print("H")
heads_streaks[-1] = 1
else:
print("T")
heads_streaks.append(0)
print("longest streak is: {}".format(sorted(heads_streaks, reverse=True)[0]))
uj5u.com熱心網友回復:
冒著太多魔法的風險,這些是我會使用的工具:
random.choices()可用于一步繪制您的 100 個樣本itertools.groupby()可用于將這些投擲分組為條紋,即將隨機投擲劃分為邊相同的組- 串列推導和生成器使回圈遍歷事物并提取所需資訊變得非常容易
把這些放在一起,我得到:
import random
import itertools
# perform 100 coin tosses and print them out
tosses = random.choices('HT', k=100)
print('tosses: ', *tosses)
# turn these into streaks of the same side
streaks = [''.join(streak) for _, streak in itertools.groupby(tosses)]
print('streaks: ', *streaks)
# get the longest streak of heads
lsh = max(len(s) for s in streaks if s[0] == 'H')
print('longest streak of heads: ', lsh)
一次運行,其中輸出:
tosses: H T H T T T H H T T H H H H T H T T T T H T T H H H H H T T H H H H H H T T T T H T H H T H T T H H H H H H H T T T H T H H T T T H H T T H H T H T H H T H H H T T H T T H T H T H H T T T T T T H T H
streaks: H T H TTT HH TT HHHH T H TTTT H TT HHHHH TT HHHHHH TTTT H T HH T H TT HHHHHHH TTT H T HH TTT HH TT HH T H T HH T HHH TT H TT H T H T HH TTTTTT H T H
longest streak of heads: 7
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/510376.html
上一篇:如果className具有特定的CSS屬性值,則添加className
下一篇:如何使用輸入函式匹配亂數
