用法:
RandomState.weibull(a, size=None)
从威布尔分布中抽取样本。
从具有给定形状参数a的1参数Weibull分布中抽取样本。
在此,U是从(0,1]上的均匀分布得出的。
更为常见的2参数Weibull,包括比例参数只是。
参数: - a: : float 或 array_like of floats
形状参数的分布。必须为非负数。
- size: : int 或 tuple of ints, 可选参数
输出形状。如果给定的形状是
(m, n, k)
, 然后m * n * k
抽取样品。如果尺寸是None
(默认),如果返回一个值a
是标量。除此以外,np.array(a).size
抽取样品。
返回值: - out: : ndarray或标量
从参数化的威布尔分布中抽取样本。
注意:
威布尔(或最小值的类型III渐近极值分布,SEV类型III或Rosin-Rammler分布)是用于建模极值问题的一类广义极值(GEV)分布之一。此类包括Gumbel和Frechet分布。
威布尔分布的概率密度为
哪里是形状和规模。
该函数的峰值(模式)为。
当
a = 1
,威布尔分布简化为 index 分布。参考文献:
[1] Waloddi Weibull,皇家技术大学,斯德哥尔摩,1939年,“材料强度的统计理论”,Ingeniorsvetenskapsakademiens Handlingar Nr 151,1939年,斯德哥尔摩,斯德哥尔摩,Generalstabens Litografiska Anstalt。 [2] Waloddi Weibull,“广泛适用性的统计分布函数”,《应用力学杂志》 ASME,1951年发表。 [3] 维基百科,“Weibull distribution”,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()
注:本文由纯净天空筛选整理自 numpy.random.mtrand.RandomState.weibull。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。