我正在做自动处理无聊事情课程中的抛硬币挑战。我必须计算连续出现6次正面或6次反面的概率,总共出现100次。
所以,第一步是生成一个列表,每个项目被分配为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 ' s和H ' s的列表,但列表的长度是随机的…有时是2项,有时是10项,甚至14项。
提前谢谢你,我希望我已经解释得很清楚了。第一个问题
在循环的每次迭代中调用random.randint
两次。每个都可能产生1或0。考虑一下如果第一次调用random.randint
产生0
而下一次调用1
会发生什么。这将导致在循环的同一迭代中将H
和T
同时添加到列表中。相反的情况也可能发生,导致没有附加值。
因此,在循环的每次迭代中,可以添加0、1或2个值。因为如果它不是正面,它一定是反面,一个选项将是添加一个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