连续投掷硬币10000次,连续6次正面或反面的解决方案
数学方法: 0.5的6次方等于0.015625
import random
numberOfStreaks = 0
alist = [] # 创建一个列表用来放置硬币正反面的状态,用1和0表示
for experimentNumber in range(10000):
a = random.randint(0, 1)
alist.append(a)
# print(alist)
target = 0 # 表格从0下标开始计算
while target <= 9994:
# 如果6个连续值全是1,目标数+1
if alist[target:target+6] == [1, 1, 1, 1, 1, 1]:
numberOfStreaks += 1
target += 6
# 如果6个连续值全是0,目标数+1
elif alist[target:target+6] == [0, 0, 0, 0, 0, 0]:
numberOfStreaks += 1
target += 6
# 以上都不是,下标向后移动一位
else:
target += 1
print(f'Chance of streak: {(numberOfStreaks / 10000)}%')