1. 程式人生 > >python 生成隨機數的兩種方法

python 生成隨機數的兩種方法

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]])