笔记1-《程序员的数学2:概率统计》概率的定义  

目录
  1. 概率的定义
  2. 三扇门(蒙提霍尔问题)
  3. 以飞艇视角表述
  4. 三元组(Ω, F, P)—— 上帝视角

概率的定义

  • 概率的数学定义

    • 「明天下雨的概率是 30%」这样的结论究竟有没有意义?
    • 「1192 年 6 月 6 日某地曾下过雨的概率」—— 讨论过去的事件,既成事实与概率何关联?
    • 数学的做法:暂且不管问题是否有意义,先抽象地定义概率的概念
    • 概率的具体定义是「满足若干条件的三元组(Ω, F, P)」
    • 目标:把概率的直观印象与抽象定义统合起来

三扇门(蒙提霍尔问题)

  • 题目

    • 三扇门,只有一扇后面是高档豪车,另两扇门后是山羊
    • 挑战者选一扇,主持人(知道答案)打开没被选中的错误门,露出一只山羊
    • 主持人问:「是否要重新选择?」
    • 重选、坚持、还是两者没区别?
  • 正确答案与常见错误

    • 第一次选择后,有 1/3 的概率正确,2/3 的概率不正确
    • 如果第一次选对,重选必错;如果第一次选错,重选必对
    • 所以「第一次选错」的概率 = 「重选后正确」的概率 = 2/3
    • 重选更加有利
  • 常见的草率见解

    • 游戏开始时三种可能,各 1/3
    • 假设挑战者选门 3,主持人打开门 1,于是门 1 不再成立,只剩两种可能
    • 「门 2 是正确答案(1/2)、门 3 是正确答案(1/2)」
    • 于是重选门 2 和继续选门 3 概率相同
    • 得到了这个错误结论的人,很难被说服

以飞艇视角表述

  • 放弃骰子

    • 概率是很抽象的概念,仅凭直觉判断很难理解本质
    • 换一种视角,把它转成可以实际衡量的形式
    • 放弃使用骰子 —— 这个思维模式的转换就是现代数学中概率定义的基石
  • 360 个游戏会场

    • 在一个巨大的广场中分设 360 个会场,每个会场同时进行游戏
    • 你乘坐在飞艇中,从上空俯视
    • 与之前不同:每个会场都准备了剧本,主持人和挑战者按剧本表演,所有行动事先确定
    • 剧本设定:
      • 120 个会场的门 1 是正确答案,120 个门 2,120 个门 3
      • 门 1 正确的 120 个会场中,40 个要求挑战者选门 1,40 个选门 2,40 个选门 3
      • 门 2、门 3 正确的会场同样如此
  • 主持人打开哪扇门

    • 挑战者选错(×)时,剩下的两扇门一正确一错误,主持人只能开错误的那扇

    • 挑战者选对(○)时,剩下两扇门各有一半概率被打开

    • 统计下来,每个「主持人开哪扇门」的格子里都有 20 个 ○ 和 40 个 ×:

      主持人开\挑战者选选门 1选门 2选门 3
      开门 1—○20 / ×40○20 / ×40
      开门 2○20 / ×40—○20 / ×40
      开门 3○20 / ×40○20 / ×40—
    • 从飞艇上数下来:

      • 坚持最初的选择:○ 120 个会场正确,× 240 个错误
      • 改选其他门:× 的 240 个会场得到正确答案,○ 的 120 个最终选错
    • 改选更妥当,只要统计数量即可,不存在歧义

    • 还能数出「轻率结论」错了几处:挑战者选门 3 而主持人打开门 1 的会场共 60 个,其中门 3 正确的只有 20 个 —— 概率并非各占一半

  • 为什么不用 18 个会场

    • 确实够用,但更多会场有助于理解后续内容
    • 飞艇视角的四个要点:
      • 准备大量会场,每个会场同时进行游戏
      • 各会场中所有人仅按事先确定的剧本行动
      • 剧本设定合理时,所有会场的结果能完美模拟原本的事件发生概率
      • 从飞艇上俯瞰并统计会场数量,就能明确判断结论正误
    • 抽象的概念被转换成了具体的统计问题

三元组(Ω, F, P)—— 上帝视角

  • 从会场到世界

    • 在飞艇上俯瞰各会场不同角色的行动,这大概就是上帝眼中的世界
    • 平面上的每一点都是一个不同的世界,每个世界都有银河系、地球、上面生活着人
    • 骰子在一个世界中的结果为 1,在另一个世界中可能是 5
    • 每个世界都预先准备了专用剧本,记录从古至今乃至未来发生的所有事件
    • 对某个特定的世界来说,所有结果都已确定,不存在任何随机事件
  • 用转盘还原随机性

    • 准备一个写有 1 至 360 的巨大转盘

    • 转动后停在 124 号,就观察第 124 个会场

    • 虽然准备了 360 个会场,但只观察其中一个

    • 从观察者角度看,门 1 正确的概率 = 120/360 = 1/3,门 2、门 3 同样是 1/3

    • 与掷骰子决定没有区别 —— 转换后仍能给出概率形式的解释

    • 用代码验证蒙提霍尔的两种算法

      #ruby
      # 枚举 360 个会场的剧本,统计坚持 vs 改选
      total = 360
      stay_win = switch_win = 0

      (1..total).each do |i|
      # 正确答案的门:每 120 个会场轮换
      correct = ((i - 1) / 120) + 1 # 1, 2, 3 各 120 个
      # 挑战者的选择:每 40 个会场轮换
      choice = ((i - 1) / 40) % 3 + 1 # 1, 2, 3 各 120 个

      # 主持人打开一扇错误的门
      opened = ([1, 2, 3] - [correct, choice]).sample
      other = ([1, 2, 3] - [choice, opened]).first # 剩下的另一扇

      if choice == correct
      stay_win += 1
      switch_win += 1 if other == correct # 选对时改选必错
      else
      switch_win += 1 # 选错时改选必对
      end
      end

      puts "坚持原选正确: #{stay_win}/#{total} (#{(stay_win.to_f/total*100).round(2)}%)"
      puts "改选后正确: #{switch_win}/#{total} (#{(switch_win.to_f/total*100).round(2)}%)"
      # 坚持原选正确: 120/360 (33.33%)
      # 改选后正确: 240/360 (66.67%)
123.8k