先說結論:
numpy.random.normal
對應的是 正態分布
,numpy.random.randn
對應的是標準正態分布
,所以 numpy.random.randn
是 numpy.random.normal
的一個特例。
1. numpy.random.normal
從正態(高斯)分布中抽取隨機樣本。
random.normal(loc=0.0, scale=1.0, size=None)
正態分布的概率密度函數最早由棣莫弗(De Moivre)推導得出,200 年后由高斯(Gauss)和拉普拉斯(Laplace)各自獨立推導出來。由于其特有的形狀特征,該函數常被稱為鐘形曲線。
正態分布現象在自然界中經常出現。例如,它描述了受大量微小且隨機干擾影響的樣本的常見分布情況,每個干擾都有其獨特的分布特征。
參數:
loc: 浮點數或浮點數數組
分布的“中心”值(均值)
scale: 浮點數或浮點數數組
分布的標準差(離散程度或“寬度”)。必須為非負值。
size: 整數或整數元組(可選)
輸出形狀。如果給定的形狀為 (m, n, k)
,那么會抽取 m * n * k
個樣本。如果 size
為 None
(默認值),且 loc
和 scale
都是標量,則返回一個值。否則,會抽取 np.broadcast(loc, scale).size
個樣本。
返回值:
輸出一個 ndarray
或 標量 (scalar)
從參數化正態分布中抽取樣本。
筆記:
高斯分布的概率密度是:
其中,μ是均值,σ是標準差,標準差的平方σ2叫做方差。
驗證均值和標準差
展示樣本的直方圖,以及概率密度函數
具有均值為 3、標準差為 2.5 的正態分布的 2×4 樣本數組
2. numpy.random.randn
random.randn(d0, d1, ..., dn)
從 標準正態
分布中返回一個(或多個)樣本。
如果提供了正整數類型的參數,randn
函數會生成一個形狀為(d0, d1, ..., dn)
的數組,其中包含從均值為 0、方差為 1 的單變量正態分布中抽取的隨機浮點數。如果未提供任何參數,則會返回從該分布中隨機抽取的一個浮點數。
參數:
d0, d1, …, dn:整數,可選
返回數組的維度必須為非負值。如果未給出任何參數,則返回一個 Python 浮點數。
返回值:
Z:ndarray
或 float
一個由標準正態分布的浮點樣本構成的(d0,d1,...,dn)
形狀的數組,或者如果未提供參數則為單個此類浮點數。
對于具有均值為 μ
、標準差為 σ
的正態分布的隨機樣本,使用以下公式:
σ * np.random.randn(...) + μ