如何在 python 中绘制用户定义的分布?

How to draw on a user-defined distribution in python?

我需要一些来自分布 p(x)=x*exp(-ax) x>0 的样本 但在 python 中,只有指数分布可用于采样。我怎样才能在 python 中利用这个分布?谢谢!!!

我认为这是伽玛分布,link https://en.wikipedia.org/wiki/Gamma_distribution

您可以使用 here

中的函数 random.gammavariate(alpha, beta)

Severin Pappadeux 是正确的,在这种情况下您可以使用 random.gammavariate(alpha, beta)。但是,他没有解释最终分发的必要参数。

根据Gamma分布和你想要的分布,不难看出在random.gammavariate(alpha, beta)中,我们需要设置alpha = 2。然后,beta参数可以设置为a ** -1。我们只需要乘以 a ** -2 即可获得从您想要的分布中采样的值。

完整代码:

import random


def distr(a):
    return random.gammavariate(2, a ** -1) * (a ** -2)