NumPy参考 >例行程序 >Random sampling (numpy.random) >Legacy Generator (RandomState) > numpy.random.weibull
numpy.random.
weibull
(a,size = None )¶从威布尔分布中抽取样本。
从具有给定形状参数a的1参数Weibull分布中抽取样本。
在此,U是从(0,1]上的均匀分布得出的。
更为常见的2参数Weibull(包括比例参数) 为。
注意
新代码应
改为使用实例的weibull
方法default_rng()
。参见random-quick-start。
形状参数的分布。必须为非负数。
输出形状。如果给定的形状,例如,然后
样品被吸引。如果size为(默认),则如果为标量,则返回单个值。否则,将
抽取样本。(m, n, k)
m * n * k
None
a
np.array(a).size
从参数化的威布尔分布中抽取样本。
也可以看看
scipy.stats.weibull_max
,scipy.stats.weibull_min
,scipy.stats.genextreme
,gumbel
Generator.weibull
应该用于新代码。
笔记
威布尔(或最小值的III类渐近极值分布,SEV III类或Rosin-Rammler分布)是用于建模极值问题的一类广义极值(GEV)分布之一。此类包括Gumbel和Frechet分布。
威布尔分布的概率密度为
形状和比例在哪里。
该函数的峰值(模式)在 。
当为时,威布尔分布减小为指数分布。a = 1
参考文献
Waloddi Weibull,皇家技术大学,斯德哥尔摩,1939年,“材料强度的统计理论”,Ingeniorsvetenskapsakademiens Handlingar Nr 151,1939年,斯德哥尔摩,斯德哥尔摩,Generalstabens Litografiska Anstalt。
Waloddi Weibull,“广泛适用性的统计分布函数”,《应用力学杂志》 ASME,1951年发表。
Wikipedia,“ Weibull发行”, https://en.wikipedia.org/wiki/Weibull_distribution
例子
从分布中抽取样本:
>>> a = 5. # shape
>>> s = np.random.weibull(a, 1000)
显示样本的直方图以及概率密度函数:
>>> import matplotlib.pyplot as plt
>>> x = np.arange(1,100.)/50.
>>> def weib(x,n,a):
... return (a / n) * (x / n)**(a - 1) * np.exp(-(x / n)**a)
>>> count, bins, ignored = plt.hist(np.random.weibull(5.,1000))
>>> x = np.arange(1,100.)/50.
>>> scale = count.max()/weib(x, 1., 5.).max()
>>> plt.plot(x, weib(x, 1., 5.)*scale)
>>> plt.show()