给定均值与标准差,如何生成几何分布和二项分布随机数?
从均值和标准差生成几何分布与二项分布随机数
几何分布处理
numpy的np.random.geometric函数基于首次成功前的失败次数定义几何分布,其均值$\mu$与参数$p$的转换关系为:
$$\mu = \frac{1-p}{p} \implies p = \frac{1}{\mu + 1}$$
注意:几何分布的均值和标准差并非独立变量,标准差$\sigma$必须满足 $\sigma^2 = \mu(\mu+1)$,若输入的均值和标准差不匹配该关系,无法生成符合要求的几何分布数据。
示例代码:
import matplotlib.pyplot as plt import numpy as np # 给定符合几何分布约束的均值和标准差 geo_mean = 5 geo_std = np.sqrt(geo_mean * (geo_mean + 1)) # 转换为几何分布参数p p_geo = 1 / (geo_mean + 1) # 生成10000个随机数 x_geo = np.random.geometric(p=p_geo, size=10000) # 绘制直方图 plt.hist(x_geo, density=True, bins=30) plt.ylabel('Probability') plt.xlabel('Data (几何分布:首次成功前的失败次数)') plt.title('Geometric Distribution Histogram') plt.show()
二项分布处理
二项分布由试验次数$n$和单次成功概率$p$定义,均值$\mu=np$,标准差$\sigma=\sqrt{np(1-p)}$。由于有两个未知参数,需先固定其中一个(比如试验次数$n$),再推导另一个参数:
- 由均值公式得 $p = \frac{\mu}{n}$
- 代入标准差公式验证:$\sigma = \sqrt{\mu(1 - \frac{\mu}{n})}$
若要从$\mu$和$\sigma$反推$n$,可通过公式推导:
$$\sigma^2 = \mu(1 - \frac{\mu}{n}) \implies n = \frac{\mu^2}{\mu - \sigma^2}$$
$n$必须为正整数,因此需对计算结果取整。
示例代码:
import matplotlib.pyplot as plt import numpy as np # 给定的均值和标准差 bin_mean = 20 bin_std = 4 # 方法1:手动指定试验次数n n_bin = 100 p_bin = bin_mean / n_bin # 验证标准差匹配度(允许少量误差,因n为整数) print(f"理论标准差:{np.sqrt(n_bin * p_bin * (1 - p_bin))},输入标准差:{bin_std}") # 方法2:从均值和标准差推导n(需确保μ > σ²) # n_bin = int(np.round(bin_mean**2 / (bin_mean - bin_std**2))) # p_bin = bin_mean / n_bin # 生成10000个随机数 x_bin = np.random.binomial(n=n_bin, p=p_bin, size=10000) # 绘制直方图 plt.hist(x_bin, density=True, bins=30) plt.ylabel('Probability') plt.xlabel('Data (二项分布:成功次数)') plt.title('Binomial Distribution Histogram') plt.show()
内容的提问来源于stack exchange,提问作者aus10
相关产品推荐
相关产品推荐

