random模塊與 numpy.random的區別

random模塊


1.random.random()

#用於生成一個0到1的

隨機浮點數:0<= n < 1.0

import random  
a = random.random()
print(a)  

2.random.uniform(a,b)

#用於生成一個指定範圍內的隨機符點數,兩個參數其中一個是上限,一個是下限。

如果a > b,則生成的隨機數n: b <= n <= a。如果 a <b, 則 a <= n <= b。

import random  
print(random.uniform(1,10))  
print(random.uniform(10,1)) 

3.random.randint(a, b)

#用於生成一個指定範圍內的整數。

其中參數a是下限,參數b是上限,生成的隨機數n: a <= n <= b

import random  
print(random.randint(1,10)) 

4.random.randrange([start], stop[, step])

#從指定範圍內,按指定基數遞增的集合中 獲取一個隨機數。

random.randrange(10, 30, 2),結果相當於從[10, 12, 14, 16, … 26, 28]序列中獲取一個隨機數。

random.randrange(10, 30, 2)在結果上與 random.choice(range(10, 30, 2) 等效。

import random  
print(random.randrange(10,30,2)) 

5.random.choice(sequence)

#random.choice從序列中獲取一個隨機元素。其函數原型爲:random.choice(sequence)。

參數sequence表示一個有序類型。這裏要說明 一下:sequence在python不是一種特定的類型,而是泛指一系列的類型。list, tuple, 字符串都屬於sequence。

import random  
lst = ['python','C','C++','javascript']  
str1 = ('I love python')  
print(random.choice(lst))
print(random.choice(str1))  

6.random.shuffle(x[, random])

#用於將一個列表中的元素打亂,即將列表內的元素隨機排列。

import random
p = ['A' , 'B', 'C', 'D', 'E' ]
random.shuffle(p)  
print (p)  

7.random.sample(sequence, k)

#從指定序列中隨機獲取指定長度的片斷並隨機排列。注意:sample函數不會修改原有序列。

import random   
lst = [1,2,3,4,5]  
print(random.sample(lst,4))  
print(lst) 

numpy.random


函數名稱np.random. 函數功能 參數說明
rand(d0, d1, …, dn) 產生均勻分佈的隨機數 dn爲第n維數據的維度
randn(d0, d1, …, dn) 產生標準正態分佈隨機數 dn爲第n維數據的維度
randint(low[, high, size, dtype]) 產生隨機整數[low,high) low:最小值;high:最大值;size:數據個數
random_sample([size]) 在[0,1)內產生隨機數 size:隨機數的shape,可以爲元祖或者列表,[2,3]表示2維隨機數,維度爲(2,3)
random([size]) 同random_sample([size]) 同random_sample([size])
ranf([size]) 同random_sample([size]) 同random_sample([size])
sample([size])) 同random_sample([size]) 同random_sample([size])
choice(a[, size, replace, p]) 從a中隨機選擇指定數據 a:1維數組 size:返回數據形狀
bytes(length) 返回隨機位 length:位的長度
(1) np.random.rand(2,3) #產生2行三列均勻分佈隨機數組
Out[7]: 
array([[ 0.35369993,  0.0086019 ,  0.52609906],
       [ 0.31978928,  0.27069309,  0.21930115]])

(2)In [8]: np.random.randn(3,3) #三行三列正態分佈隨機數據
Out[8]: 
array([[ 2.29864491,  0.52591291, -0.80812825],
       [ 0.37035029, -0.07191693, -0.76625886],
       [-1.264493  ,  1.12006474, -0.45698648]])
(3)In [9]: np.random.randint(1,100,[5,5]) #(1,100)以內的5行5列隨機整數
Out[9]: 
array([[87, 69,  3, 86, 85],
       [13, 49, 59,  7, 31],
       [19, 96, 70, 10, 71],
       [91, 10, 52, 38, 49],
       [ 8, 21, 55, 96, 34]])
(4)In [10]: np.random.random(10) #(0,1)以內10個隨機浮點數
Out[10]: 
array([ 0.33846136,  0.06517708,  0.41138166,  0.34638839,  0.41977818,
        0.37188863,  0.2508949 ,  0.89923638,  0.51341298,  0.71233872])
(5)In [11]: np.random.choice(10) #[0,10)內隨機選擇一個數
Out[11]: 7

電腦產生隨機數需要明白以下幾點:

  1. 隨機數是由隨機種子根據一定的計算方法計算出來的數值。所以,只要計算方法一定,隨機種子一定,那麼產生的隨機數就不會變。
  2. 只要用戶不設置隨機種子,那麼在默認情況下隨機種子來自系統時鐘(即定時/計數器的值)
  3. 隨機數產生的算法與系統有關,Windows和Linux是不同的,也就是說,即便是隨機種子一樣,不同系統產生的隨機數也不一樣。
np.random.seed(1234) #設置隨機種子爲1234
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章