一、概率质量函数
什么是概率质量函数?
概率质量函数是用来描述离散随机变量的概率分布的工具。它告诉我们,某个离散随机变量取某一个特定值的概率是多少。
举个例子:抛硬币
假设你有一个程序,模拟抛硬币的结果。硬币有两个可能的结果:
-
正面(记为 1)
-
反面(记为 0)
这里,抛硬币的结果就是一个离散随机变量,因为它只能取有限个值(0 或 1)。
概率质量函数的作用
概率质量函数会告诉我们:
-
结果为 0(反面)的概率是多少?
-
结果为 1(正面)的概率是多少?
假设硬币是公平的,那么:
-
P(X=0) = 0.5(反面概率是 50%)
-
P(X=1) = 0.5(正面概率是 50%)
这里的 P(X=0) 和 P(X=1) 就是概率质量函数的值。
计算机行业的例子:服务器请求的成功率
假设你有一个服务器,每天会收到 100 个请求。每个请求可能成功(记为 1)或失败(记为 0)。根据历史数据,你知道:
-
请求成功的概率是 90%(P(X=1) = 0.9)
-
请求失败的概率是 10%(P(X=0) = 0.1)
这里的 X 是一个离散随机变量(成功或失败),而 P(X=0) 和 P(X=1) 就是它的概率质量函数。
总结
概率质量函数就是用来描述离散随机变量取某个值的概率的函数。在计算机行业中,它可以用来分析:
-
网络请求的成功率
-
程序运行的结果(比如是否抛出异常)
-
数据包是否丢失
-
等等
它的特点是:
-
只针对离散随机变量(取值是有限的)。
-
每个取值的概率都在 0 到 1 之间。
-
所有取值的概率加起来等于 1。
python演示概率质量函数
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import binom
# 定义二项分布的参数
n = 100 # 试验次数
p = 0.9 # 每次试验成功的概率
# 生成可能的取值范围
x = np.arange(0, n+1)
# 计算每个取值的概率质量函数
pmf = binom.pmf(x, n, p)
# 可视化概率质量函数
plt.figure(figsize=(14, 8))
plt.stem(x, pmf, basefmt=" ")
plt.title('二项分布的概率质量函数 (n={}, p={})'.format(n, p))
plt.xlabel('随机变量的取值')
plt.ylabel('概率')
plt.grid(True)
plt.show()
二、概率密度函数?
概率密度函数是用来描述连续随机变量的概率分布的工具。它告诉我们,某个连续随机变量在某个值附近出现的可能性有多大。
与概率质量函数(PMF)不同,概率密度函数不是直接给出某个值的概率,而是通过面积来表示概率。具体来说:
-
概率密度函数的值本身不是概率,而是一个"密度"。
-
概率是通过计算概率密度函数曲线下的面积来得到的。
举个例子:气温的变化
假设我们研究某个城市夏季的气温变化。气温是一个连续随机变量,因为它可以在一定范围内取任意值(比如 20°C 到 40°C)。
概率密度函数的作用
概率密度函数可以告诉我们:
-
气温在某个范围内(比如 25°C 到 30°C)出现的概率有多大。
-
气温在某个特定值(比如 28°C)附近的可能性有多高。
具体例子
假设气温的概率密度函数如下图所示:
-
气温在 25°C 到 30°C 之间的概率密度较高,说明这个范围的气温比较常见。
-
气温低于 20°C 或高于 35°C 的概率密度很低,说明这些极端气温很少出现。
如何计算概率?
如果我们想知道气温在 25°C 到 30°C 之间的概率,我们需要计算概率密度函数在这个区间内的曲线下的面积。这个面积就是概率。
概率密度函数的特点
-
连续随机变量:概率密度函数用于描述连续随机变量(比如气温、时间、长度等)。
-
密度值不是概率:概率密度函数的值可以大于 1,但它本身不是概率。概率是通过面积计算的。
-
总面积等于 1:概率密度函数曲线下的总面积等于 1,表示所有可能事件的概率总和为 100%。
计算机行业的例子:网络延迟
在计算机行业中,概率密度函数可以用来描述网络延迟的分布。比如:
-
网络延迟是一个连续随机变量,可能从 0 毫秒到 1000 毫秒。
-
概率密度函数可以告诉我们,延迟在 100 毫秒到 200 毫秒之间的概率有多大。
python演示概率密度函数
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# 定义正态分布的参数
mu = 500 # 均值
sigma = 100 # 标准差
# 生成可能的取值范围
x = np.linspace(0, 1000, 1000)
# 计算每个取值的概率密度函数
pdf = norm.pdf(x, mu, sigma)
# 可视化概率密度函数
plt.figure(figsize=(14, 8))
plt.plot(x, pdf, label='PDF', color='blue')
plt.title('正态分布的概率密度函数 (μ={}, σ={})'.format(mu, sigma))
plt.xlabel('网络延迟 (毫秒)')
plt.ylabel('概率密度')
plt.grid(True)
plt.legend()
plt.show()
# 计算延迟在100毫秒到200毫秒之间的概率
prob_100_to_200 = norm.cdf(200, mu, sigma) - norm.cdf(100, mu, sigma)
print('网络延迟在100毫秒到200毫秒之间的概率: {:.4f}'.format(prob_100_to_200))