基于逆高斯分布生成随机数

时间:2017-10-22 16:53:01

标签: python gaussian

我可以轻松地沿高斯/正态概率分布生成随机数。

slice = random.gauss(50.0, 15.0)

但概率分布与我想要的相反:

normal probability distribution

但我想要的是逆概率。

高斯概率的逆是这样的:inverse Gaussian probability distribution

而且我真的希望不仅捕获左侧的高概率,而且也捕获右侧的概率。

从字面上看,无论正态分布的结果是什么概率......我希望结果的实际概率相反。因此,如果它在正态分布上的概率为90%,我希望该结果在10%的时间内出现,等等。

1 个答案:

答案 0 :(得分:1)

在您编辑问题的过程中,答案可以在scipy的文档中找到 - 请检查invgauss。具体地,

from scipy.stats import invgauss
r = invgauss.rvs(mu, size=1000)

将生成从以mu(您的平均值)为中心的逆高斯分布绘制的1000个数字。绘制pdf

rv = invgauss(mu)
ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')

表示某个轴对象。为了获得更多控制权,您需要:

invgauss.pdf(x, mu, loc, scale)

其中scale特别与STD有数学关系,但我不记得它。规范形式通常仅取决于平均值。