随机变量

设 `(Omega, cc F, P)` 是概率空间. 随机变量定义为样本空间 `Omega` 上的实函数 `xi: Omega to RR`, 且满足: `xi^-1((t, oo)) in cc F`, `quad AA t in RR`. 这就是说, 对任意 Borel 集 `B sube RR`, 原像 `xi^-1(B) = { omega in Omega: xi(omega) in B }` 是一个事件. 尽管 `xi` 不是一个实数, 但出于习惯, 我们把这个事件简记为 `{ xi in B }`, 它的概率记为 `P(xi in B)`. 如 `P(xi = 1)`, `P(xi gt 100)`, `P(-10 le xi lt 10)` 等概率都是有定义的.

随机变量可类比于实变函数中的可测函数.

杂例

集卡问题 [来自群友 QAQ] 假设有 `n` 种不同的赠券, 每盒麦片内附有其中的一张赠券. 假定每盒麦片中的赠券是从 `n` 种可能中独立且均匀随机选取的. 要集齐所有类型的赠券 (也就是每种至少一张), 期望需要购买多少盒麦片?

假设已经集齐 `n-k` 张, 还差 `k` 张没有收集, 这时期望再收集 `f(k)` 张才能集齐. 于是 `f(0) = 0`, `f(k) = 1 + k/n f(k-1) + (n-k)/n f(k)`, 求解 `f(k)` 即可. 上式化简得 `f(k) = n/k + f(k-1)`, 所以 `f(n) = n/1 + n/2 + cdots + n/n`.

[来自 chatgpt (注: 不是原话)] 假设已有 `k-1` 张赠券. 为了收集到第 `k` 张赠券, 需购买的麦片盒数为随机变量 `X_k`. 问题化为求 `E(sum X_k)`. 由于随机变量和的期望等于期望的和, 这不依赖它们的独立性, 我们有 `E(sum X_k) = sum E(X_k) = sum n/k`.

    几何分布两例
  1. 假设有一对夫妇制定了如下策略: 若最小的孩子是男孩, 则不再生育; 否则就再生一个孩子. 则他们期望的子女数是多少?
  2. 试穿问题 [来自群友 流风回雪] 假设每个顾客试穿衣服后都有 0.2 的概率买下它, 问: (1) 一件衣服期望试穿多少次后被买下? (2) 顾客在试穿衣服时, 期望自己是这件衣服的第几个试穿者?
  1. 设该期望数为 `x`, 则 `x = 1 + x//2`, 解得 `x = 2`. 注意男女比例不是上述策略所能影响的, 因此该夫妇期望获得一子一女.
    1. 设期望次数是 `x`, 则 `x = 1 + 0.8 x`, 解得 `x = 5`.
    2. 疑似条件不足? 程序模拟思路:
      # 假设店家开始有 N 件衣服, 不进货, 卖完为止.
      # 从营业开始到卖完总共有 M 次试穿, 顾客的试穿发生在 M 次中的任意一次是等可能的.
      # 每次试穿时, 按均匀分布从剩下的衣服中取出一件.
      # 每次顾客试穿衣服后都有 0.2 的概率买下它.
      # 把每次顾客试穿时是第几个试穿者记下来, 然后取平均.
      
      from random import randint, sample
      
      def trial(N):
          store = list(range(N)) # 衣服编号 0 到 N-1
          try_count = [0 for i in range(N)] # 试穿计数
          while len(store) > 0:
              i = sample(range(len(store)), 1)[0] # 按均匀分布取出一件衣服
              item_id = store[i]
              try_count[item_id] += 1 # 试穿
              if randint(1, 5) == 1:
                  store.pop(i) # 买下
          return sum(n*(n+1)/2 for n in try_count) / sum(try_count)
      
      # 50 件衣服, 重复模拟 100 次
      res = sum(trial(50) for i in range(100)) / 100
      print(res) # 结果接近 5
              
圣彼得堡悖论 [来自 百度百科] 圣彼得堡游戏规则如下: 玩家支付一定的费用参与这个游戏. 在游玩过程中, 玩家反复投掷一枚硬币, 直到正面向上为止. 假如一共投掷了 `n` 次, 则最后获得的奖金数等于 `2^n` 元. 容易算出, 玩家投掷次数为 `n` 的概率等于 `2^-n`, 于是玩家期望获得的奖金是无穷大: 按数学期望的定义, 这个期望值并不存在. `sum_(n ge 1) 2^n * 2^-n = oo`. 然而, 根据实际经验, 获得的奖金往往也就几十元而已. 正如Hacking(1980)所说:“没有人愿意花25元去参加一次这样的游戏.” 这就出现了期望值与实际情况的“矛盾”.
期望的 Abel 变换公式 对于取值非负数 (或正整数) 的离散型随机变量 `X`, 它的期望等于 `E(X) = sum_(k ge 0) k * P(X = k)` `= sum_(k ge 0) P(X gt k)`. 分别是下表按列与按行求和的结果:
            p₅
         p₄ p₅
      p₃ p₄ p₅
   p₂ p₃ p₄ p₅
p₁ p₂ p₃ p₄ p₅

一维随机游走 [来自群友 渡梦] 一个游戏的胜率为 60%, 赢一把加 1 分, 输一把扣 1 分, 分数不会低于 0. 设当前分数为 0, 求要赢 11 分期望需要进行多少场比赛.

[来自群友 火雨] 这是典型的 Markov 链问题. 设胜率为 `p`, 当前分数为 `n`, 要赢到 11 分期望进行的比赛场数为 `E_n`, 于是 `E_n = 1 + p E_(n+1) + (1-p) E_(n-1)`,
`E_0 = 1 + p E_1 + (1-p) E_0`,
`E_11 = 0`.
列出三对角形线性方程组 `bm (A E) = bm b`, 其中 `bm A = [0.6, -0.6; -0.4, 1, -0.6; , ddots, ddots, ddots; ,, -0.4, 1, -0.6; ,,, -0.4, 1]_(11 xx 11)`,
`bm E = (E_0, cdots, E_10)^(sf T)`,
`bm b = (1, cdots, 1)^(sf T)`.
解得 `E_0 = 45 + 10 * (2//3)^11 ~~ 45.1156`.

    生日问题 在 `1` 到 `n` 中随机独立抽取数字:
  1. 抽取 `m` 次时, 问其中出现重复数字的概率.
  2. 期望抽取多少次时, 首次出现重复数字?
  1. 用 1 减去数字不重复的概率: `P = 1 - 1 * (n-1)/n cdots (n-m+1)/n` `= 1 - prod_(k=0)^(m-1) (n-k)/n` `= 1 - n!/((n-m)! n^m)`. `m gt n` 时, 由鸽巢原理, 概率为 1: 这也可以从上式看出, 因为 `m gt n` 时乘积当中有一项为 0. 代入 `n = 365`, `m = 50` 时, 我们发现 `P` 高达 `97%`. 这意味 `50` 人中有两人生日在同一天的概率非常之高. 这是因为我们有上界估计 `prod_(k=0)^(m-1) (n-k)/n` `le prod_(k=0)^(m-1) exp(-k/n)` `= exp(-(m(m-1))/(2 n))`. 当 `m^2//n to oo` 时上式快速趋于 0.
  2. [来自群友 火雨] 设抽取到 `X` 次时, 首次出现重复数字, 则由期望的 Abel 变换公式, `E(X) = sum_(k ge 0) P(X gt k)` `= sum_(k=0)^n n!/((n-k)! n^k)`. 我们估计上式的阶. `E(X) le sum_(k=0)^n exp(-(k(k-1))/(2n))` `~~ sqrt n int_0^oo exp(-x^2/2) dx` `= sqrt((pi n)/2)`.