當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python numpy random.mtrand.RandomState.normal用法及代碼示例


用法:

RandomState.normal(loc=0.0, scale=1.0, size=None)

從正態(高斯)分布中抽取隨機樣本。

正態分布的概率密度函數,首先由De Moivre提出,然後在200年後由Gauss和Laplace分別得出[2]由於其特征形狀,通常稱為鍾形曲線(請參見下麵的示例)。

正態分布通常在自然界中發生。例如,它描述了受大量微小隨機幹擾影響的樣本的普遍分布,每種幹擾都有其自己獨特的分布[2]

參數:
loc float 或 array_like of floats

分布的平均值(“centre”)。

scale float 或 array_like of floats

分布的標準偏差(點差或“width”)。必須為非負數。

size int 或 tuple of ints, 可選參數

輸出形狀。如果給定的形狀是(m, n, k), 然後m * n * k抽取樣品。如果尺寸是None(默認),如果返回一個值locscale都是標量。除此以外,np.broadcast(loc, scale).size抽取樣品。

返回值:
out ndarray或標量

從參數化正態分布中抽取樣本。

注意:

高斯分布的概率密度為

p(x) = \frac{1}{\sqrt{ 2 \pi \sigma^2 }}
e^{ - \frac{ (x - \mu)^2 } {2 \sigma^2} },

哪裏\mu是卑鄙的\sigma標準偏差。標準差的平方,\sigma^2,稱為方差。

該函數的平均值處於峰值,並且其“spread”隨著標準偏差的增加而增加(該函數在0.65倍時達到最大值)x + \sigmax - \sigma [2])。這意味著numpy.random.normal更有可能返回接近均值的樣本,而不是相距較遠的樣本。

參考文獻:

[1]維基百科,“Normal distribution”,https://en.wikipedia.org/wiki/Normal_distribution
[2](123)P. R. Peebles Jr.,“Central Limit Theorem”,“概率,隨機變量和隨機信號原理”,第四版,2001年,第51、51、125頁。

例子:

從分布中抽取樣本:

>>> mu, sigma = 0, 0.1 # mean and standard deviation
>>> s = np.random.normal(mu, sigma, 1000)

驗證均值和方差:

>>> abs(mu - np.mean(s))
0.0  # may vary
>>> abs(sigma - np.std(s, ddof=1))
0.1  # may vary

顯示樣本的直方圖以及概率密度函數:

>>> import matplotlib.pyplot as plt
>>> count, bins, ignored = plt.hist(s, 30, density=True)
>>> plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
...                np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
...          linewidth=2, color='r')
>>> plt.show()
../../../_images/numpy-random-mtrand-RandomState-normal-1_00_00.png

來自N(3,6.25)的Two-by-four個樣本數組:

>>> np.random.normal(3, 2.5, size=(2, 4))
array([[-4.49401501,  4.00950034, -1.81814867,  7.29718677],   # random
       [ 0.39924804,  4.68456316,  4.99394529,  4.84057254]])  # random

相關用法


注:本文由純淨天空篩選整理自 numpy.random.mtrand.RandomState.normal。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。