掷硬币的连胜编程题:求1000次中连续六次正面或者反面的概率,我的代码概率是0,不知道逻辑哪里出错了
import random
z = [] #记录连续相同
r = [0,0] # 记录正面反面相同超过一定数量的次数
for i in range(1000):
x = random.randint(0,1)
if len(z) == 0: # 第一次投,记录结果
z.append(x)
elif z[-1] == x: # 后边投,如果和前一次一样,则记录结果
z.append(x)
else: # 否则,从新记录结果
z = [x]
if len(z) > 5: # 如果连续命中同一结果6次及以上,则相应的计数加一,我这里是连续正面10次,算5次连续正面6次,如果需要从新从零计算,追加一句 z = [] 即可
r[x] += 1
print(r)
1,连续抛1000次,你把每一次的结果都记录下来,设定一个常量记录连续出现的次数,如果跟上一次结果一样,常量加一,如果不一样常量减一,如果常量到达6,就加到一个常量数组,最后看看常量数组能记录几次,这个减一运行个很多次,概率太小,不然每次都是零