如何在 python 中随机抽样 2 参数威布尔分布

How to random sample a 2-parameter weibull distribution in python

我想知道如何在 python 中生成具有 2 参数 (lambda, k) 的随机 weibull 分布。我知道 numpy 有一个 numpy.random.weibull,但它只接受 a 参数作为分布的形状。

好吧,如果您从 weibull 分布中抽取一个缺少标度参数的数字(假定标度等于 1),然后将其标度乘以 lambda。

x = numpy.random.weibull(a)
return lambda*x

Severin Pappadeux 的回答可能是包含比例参数的最简单方法。另一种方法是使用 scipy.stats.weibull_minweibull_min 具有三个参数:形状、位置和比例。您只需要形状和比例,因此您可以将位置设置为 0。

from scipy.stats import weibull_min

n = 100     # number of samples
k = 2.4     # shape
lam = 5.5   # scale

x = weibull_min.rvs(k, loc=0, scale=lam, size=n)