本节摘要:连续型随机变量取值为不可数无穷(如寿命、体重、价格),单点概率恒为 0,概率只能通过"区间上的积分"给出。描述它的两个工具:概率密度函数 f(x) 刻画"局部浓度",分布函数 F(x)=P(X≤x) 刻画"累计"。本节用"赌场赔付时间"与"保费定价"两个案例,讲清密度函数、分布函数的定义与互推,并用蒙特卡洛模拟把"单点概率为零"与"区间概率即面积"两个核心直觉钉实。
上一节的离散随机变量像筹码:一摞一摞摆在取值点上,每个点有自己的概率质量。连续型随机变量则像赌场里转动的轮盘指针最终停下的角度——它可以在 [0, 360) 内取任意实数,单看"刚好停在 137.42°"这件事,概率是 0。
为什么单点概率必为 0?连续变量取值是不可数无穷多,若每个点都有正概率 p>0,把无穷多个点加起来就超过 1 了,与"总概率为 1"矛盾。所以连续世界的基本定律是:
概率从此只能落在区间上:P(a ≤ X ≤ b)。"单点概率为零"不是缺陷,而是连续性的必然推论——它也解释了为什么"体重刚好 70.000…kg"这种问题没有意义,有意义的是"落在 69.5 到 70.5 之间"。
既然点没有概率,我们用什么描述"哪里更容易取值"?答案是概率密度函数 f(x),满足两个条件:
区间概率等于密度曲线下的面积:
注意 f(x) 本身不是概率,可以大于 1(它是"每单位长度的概率浓度")。类比赌场:赌注金额的分布密度高,说明钱多压在那个价位附近;f(x) 高的地方,X 取附近值的"概率浓度"大。
赌场理赔窗口的等待时间常用指数分布建模,密度为 f(t) = λe^(−λt)(t ≥ 0),λ 是"平均速率"。若平均每 10 分钟来一起赔付,λ=0.1,求"下一笔赔付在 5 分钟内到来"的概率:
import numpy as np # 手算:P(T ≤ 5) = ∫₀⁵ 0.1·e^(−0.1t)dt = 1 − e^(−0.5) p_hand = 1 - np.exp(-0.5) print("手算 P(T≤5) = %.4f" % p_hand) # 模拟:直接抽样指数分布,统计落在 5 分钟内的比例 rng = np.random.default_rng(11) T = rng.exponential(scale=10, size=1_000_000) print("模拟 P(T≤5) = %.4f" % (T <= 5).mean()) # 两者输出均约 0.3935
手算与模拟都给出 0.3935——"概率是密度下的面积"这句话被一百万次抽样钉实。换成"赔付在 5 到 15 分钟之间"的概率,手算 ∫₅¹⁵ = e^(−0.5)−e^(−1.5),模拟同样能对上,读者可自行验证。
密度函数看"局部浓度",分布函数看"从头累积"。定义:
分布函数有四个必然性质:非降、右连续、F(−∞)=0、F(+∞)=1。任何随机变量(离散或连续)都有分布函数,它是描述分布的统一语言。反过来,密度函数是分布函数的导数:f(x) = F′(x)。两者互推,一个给"局部",一个给"累计"。
区间概率用分布函数表达更简洁:
这正是"区间概率 = 右端累计 − 左端累计"。用赔付时间案例验证:P(5<T≤15) = F(15) − F(5) = (1−e^(−1.5)) − (1−e^(−0.5)) ≈ 0.3835。
from scipy.stats import expon # 分布函数直接算区间概率 F = expon(scale=10).cdf print("P(5<T≤15) = %.4f" % (F(15) - F(5)))
在赌场决策里,密度函数告诉你"赔率集中区",分布函数告诉你"赢面累计到几成"。二者是同一枚硬币的两面,做题时先想清楚手里是 f 还是 F,再决定用积分还是用差值。
虽然本节主角是连续型,但要记住:分布函数 F(x) 对离散、连续、混合型一视同仁。离散变量 X 的分布函数是阶梯函数(在取值点跳跃,跳高 = 该点概率);连续变量的是连续曲线。这个统一视角是第 3 章期望定义(勒贝格-斯蒂尔切斯积分)和第 5 章中心极限定理"离散逼近连续"的伏笔。
⚠️ 常见坑 1:把 f(x) 当概率。f(x) 可以大于 1,它本身不是概率,只有积分才是。
⚠️ 常见坑 2:单点概率习惯。连续变量 P(X=a)=0,不要说"恰好等于",要说"落在区间内"。
⚠️ 常见坑 3:混淆 f 和 F。看到"密度函数"用积分,看到"分布函数"用差值;两者通过求导/积分互推,方向别搞反。