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
電腦產生隨機數需要明白以下幾點:
- 隨機數是由隨機種子根據一定的計算方法計算出來的數值。所以,只要計算方法一定,隨機種子一定,那麼產生的隨機數就不會變。
- 只要用戶不設置隨機種子,那麼在默認情況下隨機種子來自系統時鐘(即定時/計數器的值)
- 隨機數產生的算法與系統有關,Windows和Linux是不同的,也就是說,即便是隨機種子一樣,不同系統產生的隨機數也不一樣。
np.random.seed(1234) #設置隨機種子爲1234