概率分布之多项分布详解
多项分布是概率论与统计学中核心的离散概率分布之一,是二项分布的自然推广,专门用于描述多结果、固定次数、独立重复试验中各结果出现频率的概率规律,本科阶段的概率论、数理统计课程,以及研究生阶段的机器学习、数据分析相关研究中都会频繁用到这一分布。
一、多项分布的通俗理解
简单来说,当一次试验有3个及以上可能的结果,且每个结果的发生概率固定、试验之间相互独立、总试验次数确定时,想要知道各结果分别出现多少次的概率,就可以用多项分布来描述。
经典例子
对比二项分布(仅2个结果,如掷硬币:正面/反面)就能快速理解:多项分布是二项分布在「结果数量」上的推广,二项分布能解决的是“两种结果出现次数的概率”,多项分布则能解决“多种结果同时出现对应次数的概率”。
二、多项分布的核心特点
多项分布的适用场景必须满足以下5个核心条件,缺一不可,也是判断一个试验是否能用多项分布分析的关键:
三、多项分布的数学定义与概率计算
1. 符号与分布表示
假设进行n次独立重复试验,单次试验有k个结果,各结果的发生概率为p1,p2,…,pkp_1,p_2,…,p_kp1,p2,…,pk(满足∑i=1kpi=1\\sum_{i=1}^k p_i=1∑i=1kpi=1)。
用X1,X2,…,XkX_1,X_2,…,X_kX1,X2,…,Xk分别表示k个结果在n次试验中出现的次数(满足∑i=1kXi=n\\sum_{i=1}^k X_i=n∑i=1kXi=n,且Xi≥0X_i≥0Xi≥0为整数),则称随机向量(X1,X2,…,Xk)(X_1,X_2,…,X_k)(X1,X2,…,Xk)服从参数为n和p=(p1,p2,…,pk)p=(p_1,p_2,…,p_k)p=(p1,p2,…,pk)的多项分布,记为:
(X1,X2,…,Xk)∼Multinomial(n,p=(p1,p2,…,pk))(X_1,X_2,…,X_k) \\sim Multinomial(n, p=(p_1,p_2,…,p_k))(X1,X2,…,Xk)∼Multinomial(n,p=(p1,p2,…,pk))
示例表示:上述抽球实验(n=10,红0.5、蓝0.3、绿0.2),记XRX_RXR为红球出现次数、XBX_BXB为蓝球次数、XGX_GXG为绿球次数,则:
(XR,XB,XG)∼Multinomial(n=10,p=[0.5,0.3,0.2])(X_R,X_B,X_G) \\sim Multinomial(n=10, p=[0.5,0.3,0.2])(XR,XB,XG)∼Multinomial(n=10,p=[0.5,0.3,0.2])
2. 概率质量函数(PMF)
多项分布的概率质量函数用于计算“n次试验中,第1个结果出现x1x_1x1次、第2个结果出现x2x_2x2次、…、第k个结果出现xkx_kxk次”的具体概率,公式为:
P(X1=x1,X2=x2,…,Xk=xk)=(nx1,x2,…,xk)⋅p1x1⋅p2x2⋅…⋅pkxkP\\left(X_1=x_1, X_2=x_2, …, X_k=x_k\\right)=\\binom{n}{x_1, x_2, …, x_k} \\cdot p_1^{x_1} \\cdot p_2^{x_2} \\cdot … \\cdot p_k^{x_k}P(X1=x1,X2=x2,…,Xk=xk)=(x1,x2,…,xkn)⋅p1x1⋅p2x2⋅…⋅pkxk
其中包含两个核心部分:
(1)多项式系数
(nx1,x2,…,xk)\\binom{n}{x_1, x_2, …, x_k}(x1,x2,…,xkn) 表示“n次试验中,分配各结果出现次数的方式数”,计算公式为:
(nx1,x2,…,xk)=n!x1!⋅x2!⋅…⋅xk!\\binom{n}{x_1, x_2, …, x_k} = \\frac{n!}{x_1! \\cdot x_2! \\cdot … \\cdot x_k!}(x1,x2,…,xkn)=x1!⋅x2!⋅…⋅xk!n!
(!为阶乘,如5!=5×4×3×2×1,0!=1)
(2)概率乘积项
p1x1⋅p2x2⋅…⋅pkxkp_1^{x_1} \\cdot p_2^{x_2} \\cdot … \\cdot p_k^{x_k}p1x1⋅p2x2⋅…⋅pkxk 表示“第1个结果出现x1x_1x1次、第2个结果出现x2x_2x2次……”的概率乘积,是单次试验概率的多次幂。
3. 实际计算示例
仍以抽球实验为例,计算10次试验中红球出现5次、蓝球3次、绿球2次的概率:
已知n=10,xR=5,xB=3,xG=2x_R=5, x_B=3, x_G=2xR=5,xB=3,xG=2,pR=0.5,pB=0.3,pG=0.2p_R=0.5, p_B=0.3, p_G=0.2pR=0.5,pB=0.3,pG=0.2,代入公式:
P(XR=5,XB=3,XG=2)=10!5!⋅3!⋅2!⋅0.55⋅0.33⋅0.22P\\left(X_R=5, X_B=3, X_G=2\\right)=\\frac{10!}{5! \\cdot 3! \\cdot 2!} \\cdot 0.5^5 \\cdot 0.3^3 \\cdot 0.2^2P(XR=5,XB=3,XG=2)=5!⋅3!⋅2!10!⋅0.55⋅0.33⋅0.22
分步计算:
- 多项式系数:10!5!⋅3!⋅2!=3628800120×6×2=2520\\frac{10!}{5! \\cdot 3! \\cdot 2!}=\\frac{3628800}{120 \\times 6 \\times 2}=25205!⋅3!⋅2!10!=120×6×23628800=2520
- 概率乘积:0.55×0.33×0.22=0.03125×0.027×0.04=0.000033750.5^5 \\times 0.3^3 \\times 0.2^2=0.03125 \\times 0.027 \\times 0.04=0.000033750.55×0.33×0.22=0.03125×0.027×0.04=0.00003375
- 最终概率:2520×0.00003375=0.085052520 \\times 0.00003375=0.085052520×0.00003375=0.08505
即10次抽球中,红球5次、蓝球3次、绿球2次的概率为8.505%。
四、多项分布的公式推导逻辑
多项分布的公式并非凭空推导,核心基于二项分布的推广和组合计数原理,理解推导逻辑能更灵活地应用该分布:
简单来说,多项分布的概率公式 = 分配次数的方式数 × 各结果出现对应次数的概率乘积。
五、Python实现多项分布的模拟与可视化
本科/研究生在做实验、数据分析时,常需要用代码模拟多项分布并可视化结果,以下基于Python的numpy(生成多项分布数据)和matplotlib(可视化)实现,代码注释清晰,可直接运行,以**红、蓝、绿球抽球实验(n=1000,p=[0.5,0.3,0.2])**为例:
完整代码
import numpy as np
import matplotlib.pyplot as plt
# 设置多项分布参数
n = 1000 # 总试验次数
p = [0.5, 0.3, 0.2] # 各结果的概率(红、蓝、绿)
k = len(p) # 结果的种类数
# 生成多项分布随机数据:size=1表示生成1组数据,[0]取结果数组
data = np.random.multinomial(n, p, size=1)[0]
# 可视化结果:条形图展示各结果的出现频率
labels = ['Red', 'Blue', 'Green'] # 坐标轴标签
plt.bar(labels, data, color=['red', 'blue', 'green']) # 绘制条形图
plt.title(f'Multinomial Distribution (n={n}, p={p})') # 图表标题
plt.xlabel('Outcomes') # x轴标签:试验结果
plt.ylabel('Frequency') # y轴标签:出现次数
plt.show() # 显示图表
# 输出各结果的具体出现次数
print(f'实验中红球出现次数:{data[0]}')
print(f'实验中蓝球出现次数:{data[1]}')
print(f'实验中绿球出现次数:{data[2]}')
运行结果说明
代码拓展
若需要生成多组多项分布数据(如模拟10次1000抽球实验),只需将size=1改为size=10即可,后续可对多组数据做统计分析(如求均值、方差)。
六、总结
多项分布在实际应用中十分广泛,比如机器学习中的分类问题概率建模、统计学中的列联表分析、经济学中的市场份额预测等,掌握该分布的定义、计算和代码实现,是后续进阶学习的重要基础。

![P11246 [GESP202409 六级] 小杨和整数拆分-171主机测评](https://www.171host.com/wp-content/uploads/2026/11/20261108100631-6af049a75855c-220x150.png)
![打卡信奥刷题(3678)用C++实现信奥题 P12274 [蓝桥杯 2024 国 Python B] 设计-171主机测评](https://www.171host.com/wp-content/uploads/2026/11/20261108053830-6af00ad6bdf8d-220x150.png)

