为何我的Python蒙特卡洛模拟未生成正态分布?
为何你的Python蒙特卡洛模拟无法生成正态分布?
你的代码模拟的是几何分布,而非正态分布,这是结果不符合预期的核心原因,具体分析如下:
1. 代码对应的分布类型
你的逻辑是:重复进行成功概率为P=0.1的伯努利试验,直到第一次成功为止,记录试验次数。这个随机变量服从的是几何分布——它是离散型分布,概率质量函数为 ( P(X=k) = (1-P)^{k-1}P ),形状呈现明显的右偏性:大部分试验次数集中在较小的数值上,随着次数增加,出现的概率呈指数衰减,和你给出的直方图趋势完全匹配。
2. 几何分布与正态分布的本质差异
- 正态分布是连续、对称的分布,取值围绕均值对称分布;
- 几何分布是离散、右偏的分布,取值集中在左侧,长尾向右延伸。
两者的定义和形态完全不同,所以你的模拟结果不可能呈现正态分布。
3. 生成正态分布的示例代码
如果需要生成正态分布的蒙特卡洛样本,可以直接使用numpy的正态分布生成函数:
import numpy as np import matplotlib.pyplot as plt # 生成1000个均值为0、标准差为1的正态分布样本 samples = np.random.normal(loc=0, scale=1, size=1000) plt.hist(samples, bins=30) plt.show()
内容的提问来源于stack exchange,提问作者LeaG
相关产品推荐
相关产品推荐

