python中的隨機數函數


python中的隨機函數有很多,很容易混淆,這里總結一下。主要參考自:https://blog.csdn.net/brucewong0516/article/details/79011562

python中常用的隨機函數有:1)np.random.rand;2)np.random.randint;3)np.random.randn;4)np.random.random。

1. np.random.rand(d0, d1, ..., dn)

根據給定維度生成[0,1)之間的數據,包含0,不包含1。其中dn表示每個維度的大小,n表示維度的個數。返回值為指定維度的array。

舉例:

 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)

randn函數返回一個或一組樣本,具有標准正態分布,均值為0,標准差為1。其中dn表示每個維度的大小,n表示維度的個數。返回值為指定維度的array。

舉例:

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

返回隨機整數,范圍區間為[low,high),包含low,不包含high。其中low為最小值,high為最大值,size為數組維度大小,dtype為數據類型,默認的數據類型是np.int。high沒有填寫時,默認生成隨機數的范圍是[0,low)。

 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 '''
  • numpy.random.random_sample(size=None)
  • numpy.random.ranf(size=None)
  • numpy.random.sample(size=None)

上面三個函數同樣具有類似的功能。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM