2.1 离散型随机变量与分布律


2.1 离散型随机变量与分布律

本节摘要:随机变量是把样本空间映到实数的函数,离散型只取有限或可数个值,其全部概率信息浓缩为分布律 P(X=xₖ)=pₖ,满足每项非负、总和为 1。本节以"押注两把骰子的 payout 设计"为主线,讲清分布律的构造、两变量联合分布律的读法,以及用模拟经验分布对照理论分布律的标准实验。

从"事件"升级到"金额"

第 1 章的赌约以事件表述:"掷出大于 3 你赢"。赌徒真正记账的单位是金额,于是定义 X:掷出 4 或 5 赢 10 元记 +10,掷出 6 赢 20 元记 +20,其余输 15 元记 −15。X 是定义在样本空间上的实值函数——这就是随机变量的全部含义。所谓"研究 X 的统计规律",就是回答:它取每个可能值各有多大概率。这张价目表叫分布律

x −15 10 20
P(X=x) 3/6 2/6 1/6

三项非负、合计为 1——任何合法分布律的两个充要条件。有了这张表,"这局不亏"的概率 = P(X≥0) = 3/6,"单局盈亏"的一切问题都能从表上查出来。分布律就是离散随机变量的完整档案,别的东西(期望、方差)都是它的派生统计量。

构造分布律:从计数到概率

构造分布律的通用三步:列出 X 的全部取值 → 数出每个取值对应的样本点 → 除以总样本点数(等可能情形)。看一个稍复杂的赌局:同时掷两颗骰子,X = 两颗中的最大点数。取值 1..6,对应样本点数依次为 1, 3, 5, 7, 9, 11(可画阶梯验证),分布律 P(X=k) = (2k−1)/36。这种"阶梯式"概率在"取两把武器留更好的那把"类游戏机制里反复出现。

import numpy as np from collections import Counter from fractions import Fraction # 手算:两颗骰子最大点数的分布律 omega = [(i, j) for i in range(1, 7) for j in range(1, 7)] X = [max(i, j) for i, j in omega] law = Counter(X) for k in sorted(law): print(f"P(max={k}) = {Fraction(law[k], 36)}") # 1/36, 3/36, ..., 11/36 # 模拟:经验频率对照理论 rng = np.random.default_rng(5) rolls = rng.integers(1, 7, size=(500_000, 2)) mx = rolls.max(axis=1) for k in range(1, 7): print(f"k={k} 理论 {(2*k-1)/36:.4f} 模拟 {(mx == k).mean():.4f}")

理论与模拟逐行对齐(k=6 时 11/36 ≈ 0.3056 对 0.3056),这组对照输出本身就是"分布律被验证"的证据。

图 2-1 最大点数分布律的阶梯形态

图 2-1 最大点数分布律的阶梯形态

联合分布律:两张价目表放在一起

赌局常有两个金额同时记账,比如两局各押一注(X₁, X₂)。联合分布律 P(X₁=a, X₂=b) 排成矩阵;若两局独立,矩阵每个格子的值等于两张边缘表对应项的乘积。边际分布律由矩阵按行、按列求和得到——**"求和掉一个变量"这个动作是边际化的全部**,第 4 章连续情形将再次出现。

import numpy as np # 单局分布律同前:-15(3/6), 10(2/6), 20(1/6) vals = np.array([-15, 10, 20]) probs = np.array([3/6, 2/6, 1/6]) # 两局独立:联合分布律 = 外积 joint = np.outer(probs, probs) total = (vals[:, None] + vals[None, :]) # 两局合计盈亏的取值矩阵 # 两局总盈亏的分布律:相同合计值概率合并 from collections import defaultdict agg = defaultdict(float) for i in range(3): for j in range(3): agg[total[i, j]] += joint[i, j] for s in sorted(agg): print(f"两局合计 {s:+3d} 元 概率 {agg[s]:.4f}") print("概率合计 = %.4f" % sum(agg.values())) # 1.0000

输出给出两局总账的完整价目表(从 −30 到 +40 共 6 档),概率合计为 1 自检通过。独立情形下联合 = 边缘乘积这件事,外积一行代码就兑现;不独立的情形矩阵不再能拆成外积,判别方法第 4 章系统讲。

⚠️ 常见坑:分布律表里出现负值、或合计不为 1,是初学者手算最高频错误——每次列完表先做这两项自检,成本两秒钟。另一个坑是把 P(X=x) 与 P(X≤x) 混淆,后者已是分布函数的值,2.2 节专门辨析。

延伸练习:给赌局设计"止损线"

把分布律用活的另一种方式是决策设计。回到开篇价目表(−15 / 10 / 20 元),假设你可以加一条规则:连输两局后停止。这会改变净盈亏的分布形状——左尾被截短,但右尾也因提前离场而缩水。用模拟比较有无止损两种策略的分布差异:

import numpy as np rng = np.random.default_rng(58) vals = np.array([-15, 10, 20]) probs = np.array([0.5, 2/6, 1/6]) sessions = 200_000 def run_session(stop_rule): total, losses = 0, 0 for _ in range(10): step = rng.choice(vals, p=probs) total += step losses = losses + 1 if step < 0 else 0 if stop_rule and losses >= 2: break return total plain = [run_session(False) for _ in range(sessions)] stopd = [run_session(True) for _ in range(sessions)] print("无止损: 均值 %.2f 中位 %.1f" % (np.mean(plain), np.median(plain))) print("有止损: 均值 %.2f 中位 %.1f" % (np.mean(stopd), np.median(stopd)))

值得盯住的结果:止损几乎不改变期望(提前离场省下的局本身期望为负,但也放弃了可能翻盘的局),主要改变的是分布尾部与中位数。这与第 1 章赌徒谬误的结论一脉相承——独立赌局里"势头"不存在,任何基于历史的止损规则都不能把负期望变成正期望,它只是风险偏好的表达。

本节要点回顾

  • 随机变量是样本空间到实数的函数:让"结果"变成"金额",概率论获得分析学的语言
  • 分布律是离散随机变量的完整档案:合法条件为非负 + 总和为 1
  • 构造三步法:列取值、数样本点、除总数;等可能机制是前提
  • 联合 = 边缘的外积当且仅当独立;边际化就是按行或列求和
  • 经验分布对照理论分布律是本册标准实验:五十万次模拟对齐到手算值
  • 每张分布律表做两项自检:无负项、总和为 1

作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U