设 `(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`.
# 假设店家开始有 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
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`.