本文執行個體講述了Python生成随機數組的方法。分享給大家供大家參考,具體如下:
研究排序問題的時候常常需要生成随機數組來驗證自己排序算法的正确性和性能,今天把Python生成随機數組的方法稍作總結,以備以後檢視使用。
一、使用random子產品生成随機數組
python的random子產品中有一些生成随機數字的方法,例如random.randint, random.random,
random.uniform,
random.randrange,這些函數大同小異,均是在傳回指定範圍内的一個整數或浮點數,下邊簡單解釋一下這幾個函數。
1、random.randint(low, hight) ->
傳回一個位于[low,hight]之間的整數
該函數接受兩個參數,這兩個參數必須是整數(或者小數位是0的浮點數),并且第一個參數必須不大于第二個參數 >>> import
random
>>>
random.randint(1,10)
5
>>>
random.randint(1.0, 10.0)
5
2、random.random() -> 不接受參數,傳回一個[0.0,
1.0)之間的浮點數 >>>
random.random()
0.9983625479554628
3、random.uniform(val1, val2) ->
接受兩個數字參數,傳回兩個數字區間的一個浮點數,不要求val1小于等于val2 >>>
random.uniform(1,5.0)
2.917249424176132
>>>
random.uniform(9.9, 2)
3.4288029275359024
*4、random.randrange(start, stop, step) ->
傳回以start開始,stop結束,step為步長的清單中的随機整數,同樣,三個參數均為整數(或者小數位為0),若start大于stop時
,setp必須為負數.step不能是0.* >>>
random.randrange(1, 100, 2) #傳回[1,100]之間的奇數
95
>>>
random.randrange(100, 1, -2) #傳回[100,1]之間的偶數
46
運作效果圖如下:
5、生成随機數組
下邊我們用random.randint來生成一個随機數組 import random
def random_int_list(start, stop, length):
start, stop = (int(start), int(stop)) if start
<= stop else (int(stop), int(start))
length = int(abs(length)) if length else 0
random_list = []
for i in range(length):
random_list.append(random.randint(start, stop))
return random_list
接下來我們就可以用這個函數來生成一個随機的整數序列了 >>>
random_int_list(1,100,10)
[54, 13, 6, 89, 87, 39, 60, 2, 63, 61]
二、使用numpy.random子產品來生成随機數組
1、np.random.rand 用于生成[0.0, 1.0)之間的随機浮點數,
當沒有參數時,傳回一個随機浮點數,當有一個參數時,傳回該參數長度大小的一維随機浮點數數組,參數建議是整數型,因為未來版本的numpy可能不支援非整形參數。 import numpy as np
>>>
np.random.rand(10)
array([ 0.56911206, 0.99777291, 0.18943144, 0.19387287,
0.75090637,
0.18692814,
0.69804514, 0.48808425, 0.79440667, 0.66959075])
當然該函數還可以用于生成多元數組,這裡不做詳述。
2、np.random.randn該函數傳回一個樣本,具有标準正态分布。 >>>
np.random.randn(10)
array([-1.6765704 , 0.66361856, 0.04029481, 1.19965741,
-0.57514593,
-0.79603968,
1.52261545, -2.17401814, 0.86671727, -1.17945975])
3、np.random.randint(low[, high, size]) 傳回随機的整數,位于半開區間 [low,
high)。 >>>
np.random.randint(10,size=10)
array([4, 1, 4, 3, 8, 2, 8, 5, 8, 9])
4、random_integers(low[, high, size]) 傳回随機的整數,位于閉區間 [low,
high]。 >>>
np.random.random_integers(5)
4
5、np.random.shuffle(x)
類似洗牌,打亂順序;np.random.permutation(x)傳回一個随機排列 >>> arr =
np.arange(10)
>>>
np.random.shuffle(arr)
>>> arr
[1 7 5 2 9 4 3 6 0 8]
>>>>
np.random.permutation(10)
array([1, 7, 4, 3, 0, 9, 2, 5, 8, 6])