当前位置: 首页 > news >正文

量化面试绿皮书:33. 不公平的硬币

文中内容仅限技术学习与代码实践参考,市场存在不确定性,技术分析需谨慎验证,不构成任何投资建议。

33. 不公平的硬币

你有1000枚硬币。
其中,有1枚硬币正反两面都是正面。
其他的999枚硬币都是公平的硬币。
你随机选择一枚硬币并抛掷10次,每次硬币都正面朝上。

Q: 你选择的那枚硬币是不公平硬币的概率是多少?

A: 要计算在抛掷10次都得到正面的条件下,选中的硬币是不公平硬币的概率,可以使用贝叶斯定理。以下是详细步骤:

定义事件

  • U U U: 选中的硬币是不公平硬币(两面都是正面)。
  • F F F: 选中的硬币是公平硬币(正反各50%概率)。
  • D D D: 抛掷10次,每次都得到正面。

我们需要求条件概率 P ( U ∣ D ) P(U|D) P(UD),即在观察到10次正面后,硬币是不公平的概率。

先验概率

  • 总共有1000枚硬币,其中1枚是不公平的,999枚是公平的。
  • P ( U ) = 1 1000 P(U) = \frac{1}{1000} P(U)=10001
  • P ( F ) = 999 1000 P(F) = \frac{999}{1000} P(F)=1000999

似然概率

  • 如果硬币是不公平的( U U U),每次抛掷都必然是正面,因此抛10次都正面的概率为:

    P ( D ∣ U ) = 1 P(D|U) = 1 P(DU)=1

  • 如果硬币是公平的( F F F),每次抛掷正面的概率为0.5,因此抛10次都正面的概率为:

    P ( D ∣ F ) = ( 0.5 ) 10 = 1 1024 P(D|F) = (0.5)^{10} = \frac{1}{1024} P(DF)=(0.5)10=10241

全概率 P ( D ) P(D) P(D)

使用全概率公式计算观察到10次正面的总概率:

P ( D ) = P ( D ∣ U ) ⋅ P ( U ) + P ( D ∣ F ) ⋅ P ( F ) P(D) = P(D|U) \cdot P(U) + P(D|F) \cdot P(F) P(D)=P(DU)P(U)+P(DF)P(F)

代入值:

P ( D ) = ( 1 ) ⋅ 1 1000 + 1 1024 ⋅ 999 1000 = 1 1000 + 999 1000 × 1024 P(D) = (1) \cdot \frac{1}{1000} + \frac{1}{1024} \cdot \frac{999}{1000} = \frac{1}{1000} + \frac{999}{1000 \times 1024} P(D)=(1)10001+102411000999=10001+1000×1024999

合并项:

P ( D ) = 1 1000 + 999 1024000 = 1024 1024000 + 999 1024000 = 1024 + 999 1024000 = 2023 1024000 P(D) = \frac{1}{1000} + \frac{999}{1024000} = \frac{1024}{1024000} + \frac{999}{1024000} = \frac{1024 + 999}{1024000} = \frac{2023}{1024000} P(D)=10001+1024000999=10240001024+1024000999=10240001024+999=10240002023

(注: 1000 × 1024 = 1 , 024 , 000 1000 \times 1024 = 1,024,000 1000×1024=1,024,000

后验概率 P ( U ∣ D ) P(U|D) P(UD)

根据贝叶斯定理:

P ( U ∣ D ) = P ( D ∣ U ) ⋅ P ( U ) P ( D ) P(U|D) = \frac{P(D|U) \cdot P(U)}{P(D)} P(UD)=P(D)P(DU)P(U)

代入值:

P ( U ∣ D ) = 1 ⋅ 1 1000 2023 1024000 = 1 1000 2023 1024000 = 1 1000 × 1024000 2023 = 1024000 1000 × 2023 = 1024 2023 P(U|D) = \frac{1 \cdot \frac{1}{1000}}{\frac{2023}{1024000}} = \frac{\frac{1}{1000}}{\frac{2023}{1024000}} = \frac{1}{1000} \times \frac{1024000}{2023} = \frac{1024000}{1000 \times 2023} = \frac{1024}{2023} P(UD)=10240002023110001=1024000202310001=10001×20231024000=1000×20231024000=20231024

简化分数

  • 分子 1024 = 2 10 1024 = 2^{10} 1024=210(2的10次方)。
  • 分母 2023 = 7 × 17 2 2023 = 7 \times 17^2 2023=7×172(分解质因数: 2023 ÷ 7 = 289 , 289 = 17 × 17 2023 \div 7 = 289, \ 289 = 17 \times 17 2023÷7=289, 289=17×17)。
  • 分子和分母没有公因数(1024是偶数,2023是奇数,且质因数不同),因此 1024 2023 \frac{1024}{2023} 20231024 已是最简分数。

最终概率

因此,在抛掷10次都得到正面的条件下,选中的硬币是不公平硬币的概率为:

1024 2023 \boxed{\dfrac{1024}{2023}} 20231024

解释

  • 这个结果直观上也合理:不公平硬币总是产生正面,而公平硬币产生10次正面的概率很低(约0.000976),但由于公平硬币数量多(999枚),后验概率约为0.506(即 1024 2023 ≈ 0.506179 \frac{1024}{2023} \approx 0.506179 202310240.506179),略高于50%,表明观察到10次正面后,硬币更可能是不公平的。

Python 实现

以下是使用Python实现的代码,计算在抛掷10次都得到正面的条件下,选中的硬币是不公平硬币的概率,并输出精确分数和浮点数结果。

from fractions import Fraction
from typing import Tupledef calculate_coin_probability(total_coins: int, unfair_coins: int, num_flips: int
) -> Tuple[Fraction, float]:"""计算在连续抛出指定次数正面后,选中不公平硬币的后验概率。Args:total_coins (int): 硬币总数unfair_coins (int): 不公平硬币数量(两面都是正面)num_flips (int): 连续抛掷正面的次数Returns:Tuple[Fraction, float]:  后验概率的分数形式和小数形式"""# 计算先验概率prob_unfair = Fraction(unfair_coins, total_coins)  # P(U)prob_fair = Fraction(total_coins - unfair_coins, total_coins)  # P(F)# 计算似然概率prob_heads_given_unfair = Fraction(1)  # 不公平硬币的正面概率 P(D|U)prob_heads_given_fair = Fraction(1, 2) ** num_flips  # 公平硬币连续正面的概率 P(D|F)# 计算全概率 P(D)prob_data = (prob_heads_given_unfair * prob_unfair + prob_heads_given_fair * prob_fair)# 计算后验概率 P(U|D)posterior_prob = (prob_heads_given_unfair * prob_unfair) / prob_datareturn posterior_prob, float(posterior_prob)# 问题参数
TOTAL_COINS = 1000
UNFAIR_COINS = 1
NUM_FLIPS = 10# 计算概率
prob_fraction, prob_decimal = calculate_coin_probability(total_coins=TOTAL_COINS, unfair_coins=UNFAIR_COINS, num_flips=NUM_FLIPS
)# 输出结果
print(f"后验概率(分数): {prob_fraction}")
print(f"后验概率(小数): {prob_decimal:.6f}")
print(f"解释:抛掷10次都得到正面后,硬币是不公平的概率为{prob_fraction}{prob_decimal*100:.2f}%"
)

代码说明

  • 使用fractions.Fraction保持精确计算
  • 实现贝叶斯定理:
    • 先验概率: P ( U ) = 1 1000 , P ( F ) = 999 1000 P(U) = \frac{1}{1000}, P(F) = \frac{999}{1000} P(U)=10001,P(F)=1000999
    • 似然概率: P ( D ∣ U ) = 1 , P ( D ∣ F ) = ( 1 2 ) 10 P(D|U)=1, P(D|F)=(\frac{1}{2})^{10} P(DU)=1,P(DF)=(21)10
    • 后验概率: P ( U ∣ D ) = [ P ( D ∣ U ) P ( U ) ] P ( D ) P(U|D) = \frac{[P(D|U)P(U)]}{P(D)} P(UD)=P(D)[P(DU)P(U)]

输出:

后验概率(分数): 1024/2023
后验概率(小数): 0.506179
解释:抛掷10次都得到正面后,硬币是不公平的概率为1024/2023 ≈ 50.62%

这道面试题的本质是考察候选人将现实金融问题抽象为概率模型的能力在不确定性下动态更新决策的量化思维,这类能力直接对应高频交易信号过滤、风险事件评估和衍生品定价中的核心挑战。

🔑 核心知识点

  1. 贝叶斯推理
    • 金融场景中大量依赖贝叶斯更新(如市场信号分析、黑天鹅事件预测)
    • 核心公式: P ( U ∣ D ) = P ( D ∣ U ) P ( U ) P ( D ) P(U|D) = \frac{P(D|U)P(U)}{P(D)} P(UD)=P(D)P(DU)P(U)
  2. 条件概率计算
    • 处理低频高影响事件(如0.1%概率的欺诈交易检测)
  3. 稀有事件建模
    • 不公平硬币对应金融中的异常值(如极端市场波动)
  4. 数值稳定性
    • 避免浮点数误差(金融系统要求精确计算)

📊 面试评估维度

考察维度具体表现要求本题对应点
建模抽象能力将业务问题转化为概率模型定义事件空间 U U U/ F F F/ D D D 并量化先验/似然
动态决策思维根据新信息更新概率信念从先验概率0.1%更新至后验50.6%
数值严谨性处理小概率事件的精度控制用分数而非浮点数避免计算误差
金融直觉理解极端事件对系统的影响识别"连续10次正面"在风控中的警报意义
解释沟通能力清晰传递复杂数学结论说明后验概率跃升的金融逻辑

🧩 典型回答框架

  1. 定义事件空间

    • U U U: 选到不公平硬币, F F F: 选到公平硬币
    • D D D: 观测数据(10次连续正面)
  2. 计算先验概率

    • P ( U ) = 1 1000 P(U) = \frac{1}{1000} P(U)=10001, P ( F ) = 999 1000 P(F) = \frac{999}{1000} P(F)=1000999
  3. 推导似然函数

    • P ( D ∥ U ) = 1 P(D\|U) = 1 P(DU)=1(不公平硬币必然输出正面)
    • P ( D ∥ F ) = ( 0.5 ) 10 = 1 1024 P(D\|F) = (0.5)^{10} = \frac{1}{1024} P(DF)=(0.5)10=10241
  4. 应用全概率公式

    • P ( D ) = P ( D ∥ U ) P ( U ) + P ( D ∥ F ) P ( F ) P(D) = P(D\|U)P(U) + P(D\|F)P(F) P(D)=P(DU)P(U)+P(DF)P(F)
  5. 贝叶斯逆推

    • P ( U ∥ D ) = P ( D ∥ U ) P ( U ) P ( D ) P(U\|D) = \frac{P(D\|U)P(U)}{P(D)} P(UD)=P(D)P(DU)P(U)
  6. 金融场景映射

    • 解释结果:“10次连续正面使异常事件概率从0.1%升至50.6%,类似高频交易中连续异常报价需触发风控”

💡 核心洞察

在量化金融中,此题暗含两大深层逻辑:

  1. 信号噪声比决策
    • 连续10次正面如同市场中的极端信号,候选人需判断这是"真实模式"(不公平硬币)还是"随机噪声"(公平硬币的小概率事件)
  2. 先验敏感性认知
    • 若不公平硬币占比从1/1000改为1/10,000,后验概率骤降至9.1%——凸显金融建模中先验设定的极端重要性
  3. 高频场景映射
    • 直接对应:算法交易中连续订单流异常检测、黑箱模型失效预警等核心场景

风险提示与免责声明
本文内容基于公开信息研究整理,不构成任何形式的投资建议。历史表现不应作为未来收益保证,市场存在不可预见的波动风险。投资者需结合自身财务状况及风险承受能力独立决策,并自行承担交易结果。作者及发布方不对任何依据本文操作导致的损失承担法律责任。市场有风险,投资须谨慎。

相关文章:

  • 拯救海量数据:PostgreSQL分区表性能优化实战手册(附压测对比)
  • 发送与接收
  • 写一下自己对于“李建忠对话KK凯文.凯利《AI的进化和颠覆》实录”一些问题的理解
  • 群晖如何开启及使用ssh:小白用户上手指南-家庭云计算专家
  • Rabbitmq集成springboot 使用死信队列
  • [计算机网络] 局域网内的网络传输
  • 【Android】初识 Activity
  • 【人工智能基础】初识神经网络
  • docker私有仓库部署配置学习
  • 冯·诺依曼体系、哈佛架构以及现代计算机架构中的关键优化技术(多级缓存、流水线)
  • 网络资源模板--基于Android Studio 实现的咖啡点餐App
  • 为什么用Qwen3 embedding和rerank
  • 大模型MetaGPT面试题汇总及参考答案
  • WebRTC(七):媒体能力协商
  • Linux系统之grub-mkstandalone详解
  • C#Halcon从零开发_Day14_AOI缺陷检测策略1_Bolb分析+特征分析
  • 日语学习-日语知识点小记-进阶-JLPT-真题训练-N2阶段(3):单词2018年12月2024年7月
  • 【机器学习四大核心任务类型详解】分类、回归、聚类、降维智能决策指南
  • 案例:塔能科技以“数字光网”重塑某市照明绿色生态
  • rknn优化教程(三)
  • 花都疫情最新消息/南宁网站seo排名优化
  • 做的比较好的手机网站/谷歌搜索引擎入口2022
  • 阿克苏网站开发/什么是营销
  • 网站seo关键字优化/策划公司
  • wordpress目录安装主题/seo收费标准多少
  • 供应长沙手机网站建设/网销平台排名