numpy.random.Generator.rayleigh#
方法
- random.Generator.rayleigh(scale=1.0, size=None)#
從 Rayleigh 分佈中抽取樣本。
\(\chi\) 和 Weibull 分佈是 Rayleigh 分佈的推廣。
- 參數:
- scalefloat 或 float 的類陣列物件,選用
尺度,也等於眾數。必須是非負數。預設值為 1。
- sizeint 或 int 的 tuple,選用
輸出形狀。如果給定的形狀是,例如,
(m, n, k)
,則會抽取m * n * k
個樣本。如果 size 為None
(預設值),如果scale
是純量,則會傳回單一值。否則,會抽取np.array(scale).size
個樣本。
- 傳回值:
- outndarray 或 純量
從參數化的 Rayleigh 分佈中抽取的樣本。
註解
Rayleigh 分佈的機率密度函數為
\[P(x;scale) = \frac{x}{scale^2}e^{\frac{-x^2}{2 \cdotp scale^2}}\]例如,如果風速的東向和北向分量具有相同的零均值高斯分佈,則會出現 Rayleigh 分佈。那麼風速將具有 Rayleigh 分佈。
參考文獻
[1]Brighton Webs Ltd., “Rayleigh Distribution,” https://web.archive.org/web/20090514091424/http://brighton-webs.co.uk:80/distributions/rayleigh.asp
[2]Wikipedia, “Rayleigh distribution” https://en.wikipedia.org/wiki/Rayleigh_distribution
範例
從分佈中抽取值並繪製直方圖
>>> from matplotlib.pyplot import hist >>> rng = np.random.default_rng() >>> values = hist(rng.rayleigh(3, 100000), bins=200, density=True)
波浪高度往往遵循 Rayleigh 分佈。如果平均波高為 1 公尺,則可能有多少比例的波浪大於 3 公尺?
>>> meanvalue = 1 >>> modevalue = np.sqrt(2 / np.pi) * meanvalue >>> s = rng.rayleigh(modevalue, 1000000)
大於 3 公尺的波浪百分比為
>>> 100.*sum(s>3)/1000000. 0.087300000000000003 # random