python中的隨機函數有不少,很容易混淆,這裏總結一下。主要參考自:http://www.javashuo.com/article/p-hfimlhdw-br.htmlpython
python中經常使用的隨機函數有:1)np.random.rand;2)np.random.randint;3)np.random.randn;4)np.random.random。數組
1. np.random.rand(d0, d1, ..., dn)dom
根據給定維度生成[0,1)之間的數據,包含0,不包含1。其中dn表示每一個維度的大小,n表示維度的個數。返回值爲指定維度的array。iphone
舉例:函數
1 import numpy as np 2 3 x = np.random.rand(3, 2) 4 print(x.shape) 5 print(x) 7 8 ''' 9 輸出結果: 10 (3, 2) 11 [[0.55911292 0.5242528 ] 12 [0.15812263 0.88402055] 13 [0.50265009 0.65779738]] 14 '''
2. np.random.randn(d0, d1, …, dn)spa
randn函數返回一個或一組樣本,具備標準正態分佈,均值爲0,標準差爲1。其中dn表示每一個維度的大小,n表示維度的個數。返回值爲指定維度的array。.net
舉例:code
1 import numpy as np 2 3 x = np.random.randn(3, 2) 4 print(x.shape) 5 print(x) 6 7 ''' 8 輸出結果: 9 (3, 2) 10 [[-0.81758026 -0.0527769 ] 11 [ 0.36913285 1.67281363] 12 [ 0.83645057 -0.54296909]] 13 '''
3. np.random.randint(low[, high, size])blog
返回隨機整數,範圍區間爲[low,high),包含low,不包含high。其中low爲最小值,high爲最大值,size爲數組維度大小,dtype爲數據類型,默認的數據類型是np.int。high沒有填寫時,默認生成隨機數的範圍是[0,low)。ip
1 import numpy as np 2 3 x = np.random.randint(3) 4 print(x) 5 # 1 6 7 x = np.random.randint(1,5) 8 print(x) 9 # 3 10 11 x = np.random.randint(3, size=5) 12 print(x) 13 # [0 1 2 2 0] 14 15 x = np.random.randint(3, size=[2, 2]) 16 print(x) 17 ''' 18 [[2 0] 19 [0 1]] 20 '''
4. np.random.random([size])
生成[0,1)之間的浮點數,與np.random.rand()功能相似。舉例:
1 import numpy as np 2 3 x = np.random.random(size=[2, 2]) 4 print(x) 5 ''' 6 [[0.94329549 0.93561065] 7 [0.33493102 0.67862068]] 8 '''
上面三個函數一樣具備相似的功能。
5. np.random.choice(a[, size, replace, p])
從一個給定的一維數組,生成一個隨機樣本.
參數: a爲一維數組相似數據或整數;size爲數組維度;repalce參數爲是否能夠重複,當設置爲FALSE時,不能出現重複的數據;p爲數組中的數據出現的機率。
a爲整數時,對應的一維數組爲np.arange(a)。
1 import numpy as np 2 3 ''' 4 第一個參數值5對應的a,即傳入的數據組 5 第二個參數3就是數組的size,傳入單值時,數據維度是一維的 6 此處將生成一個一維數據包含3個小於5的整數的數組 7 ''' 8 x = np.random.choice(5, 3) 9 print(x) 10 #[4 0 4] 11 12 #給數組中每一個數據出現的機率賦值 13 x = np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0]) 14 print(x) 15 #[3 2 2] 16 17 #repalce參數爲是否能夠重複,當設置爲FALSE時,不能出現重複的數據 18 x = np.random.choice(5, 4, replace=False) 19 print(x) 20 #[2 4 1 0] 21 22 #也能夠傳入非數字、字符串的數組 23 demo_list = ['lenovo', 'sansumg','moto','xiaomi', 'iphone'] 24 x = np.random.choice(demo_list,size=(3,3)) 25 print(x) 26 ''' 27 [['sansumg' 'sansumg' 'xiaomi'] 28 ['sansumg' 'iphone' 'sansumg'] 29 ['lenovo' 'xiaomi' 'lenovo']] 30 '''
6. np.random.seed()
生成隨機數的種子,使得每次生成隨機數相同。當咱們設置相同的seed,每次生成的隨機數相同。若是不設置seed,則每次會生成不一樣的隨機數。
舉例:
1 import tensorflow as tf 2 import numpy as np 3 from sklearn.utils import check_random_state 4 5 x = np.random.randint(0, 10) 6 print(x) 7 # 8 8 9 x = np.random.randint(0, 10) 10 print(x) 11 # 9 12 13 np.random.seed(0) 14 x = np.random.randint(0, 10) 15 print(x) 16 # 5 17 18 np.random.seed(0) 19 x = np.random.randint(0, 10) 20 print(x) 21 # 5