python 生成隨機數的兩種方法
阿新 • • 發佈:2018-10-31
1. 使用 random 包生成隨機數
可以生成
均勻分佈,
高斯分佈,(包括正態分佈)
指數分佈,(與泊松分佈有區別:泊松分佈表示一段時間發生多少次,而指數分佈表示兩次發生的時間間隔)
貝塔分佈,
韋布爾分佈的隨機數
由此可見,random 包支援的隨機分佈比較有限,功能較少.
例如:
(1) 生成 [1, 10] 內的均勻分佈隨機數
random.uniform(1, 10)
Out[29]: 9.79867265758995
(2) 生成 [1, 10] 內的隨機整數
random.randint(1, 10)
Out[30]: 2
(3) 生成一個正態分佈的隨機數,均值為 5, 標準差為 1
random.gauss(5, 1)
Out[32]: 4.933013260084848
(4) 生成一個指數分佈的隨機數,均值為 0.2
random.expovariate(0.2)
Out[37]: 4.670169382329602
2. 使用 numpy 包生成隨機數
numpy 包的 random 方法基本支援所有分佈,並且能夠一次生成多行多列的隨機數.
例如:
(1) 生成 [1, 10] 內的均勻分佈隨機數, 2 行 2 列
np.random.uniform(1, 10, [2,2]) Out[46]: array([[9.72571265, 9.37758659], [9.92487471, 9.37467146]])
(2) 生成 [1, 10] 內的隨機整數, 2 行 2 列
np.random.randint(1, 10, [2,2])
Out[47]:
array([[6, 6],
[8, 7]])
(3) 生成一個正態分佈的隨機數,均值為 5, 標準差為 1, 2 行 2 列
np.random.normal(5, 1, [2,2])
Out[48]:
array([[3.74927889, 5.75561821],
[4.8353383 , 5.58410519]])
(4) 生成一個泊松分佈的隨機數,均值為 5, 2 行 2 列
np.random.poisson(5, [2,2]) Out[49]: array([[7, 3], [4, 7]])
(4) 生成一個指數分佈的隨機數,均值為 5, 2 行 2 列
np.random.exponential(5, [2,2])
Out[57]:
array([[3.06834959, 2.70350511],
[6.81427455, 2.91453029]])