You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发硬币翻转模拟程序并探究连续三次同结果的翻转次数问题

连续三次相同硬币翻转的次数探究

问题描述

要得到连续三次相同的硬币翻转结果(三次正面H或三次反面T):

  • 最少需要翻转多少次?
  • 最多可能需要多少次?
  • 平均需要多少次?

我们可以通过Python程序模拟公平硬币(正反概率各50%)的翻转过程来探究这些问题,要求:

  • 持续翻转直到出现连续三次H或T
  • 同一行输出所有翻转结果及达到条件所需的翻转次数
  • 执行10次模拟,并最终报告平均翻转次数

修正后的实现代码

原代码存在逻辑错误(如平均次数计算错误、结果输出时机偏差),以下是修正后的可运行代码:

import random

def simulate_flips():
    choices = ["H", "T"]
    sequence = []
    while True:
        flip = random.choice(choices)
        sequence.append(flip)
        # 检查最后三次翻转是否完全相同
        if len(sequence) >= 3 and sequence[-3] == sequence[-2] == sequence[-1]:
            return sequence

total_flips = 0
for _ in range(10):
    result = simulate_flips()
    flip_count = len(result)
    total_flips += flip_count
    # 输出单次模拟的结果序列与翻转次数
    print(" ".join(result), f"({flip_count} flips)")

# 计算并输出10次模拟的平均翻转次数
average = total_flips / 10
print(f"\nOn average, {average} flips were needed.")

示例输出

H T T T (4 flips)
H H T T H T H T T H H T H T T H T T T (19 flips)
T T T (3 flips)
T H H H (4 flips)
H H H (3 flips)
T H T T H T H H T T H H T H T H H H (18 flips)
H T T H H H (6 flips)
T H T T T (5 flips)
T T H T T H T H T H H H (12 flips)
T H T T T (5 flips)

On average, 7.9 flips were needed.

问题解答

  • 最少次数:3次。只要前三次翻转结果完全一致(连续三次H或连续三次T),即可满足条件。
  • 最多次数:理论上无上限。存在无限不出现连续三次相同结果的翻转序列(比如交替翻转H和T,或每次出现两次相同结果就切换),因此从概率角度,最多可能需要无限次翻转;但实际模拟中每次都会得到有限的次数。
  • 平均次数:通过马尔可夫链模型推导,公平硬币下得到连续三次相同结果的期望翻转次数为14次。小样本模拟(如10次)的结果会有波动,样本量越大,平均结果越接近14。

内容的提问来源于stack exchange,提问作者Mankesh Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 13:07:45