python 隨機函數總結

1.random

使用時需要import random。

  1. random.random()用於生成一個0到1的隨機符點數: 0 <= n < 1.0
  2. random.uniform(a, b),用於生成一個指定範圍內的隨機符點數,兩個參數其中一個是上限,一個是下限。
  3. random.randint(a, b),用於生成一個指定範圍內的整數。其中參數a是下限,參數b是上限。
  4. random.randrange([start], stop[, step]),從指定範圍內,按指定基數遞增的集合中 獲取一個隨機數。如:random.randrange(10, 100, 2),結果相當於從[10, 12, 14, 16, ... 96, 98]序列中獲取一個隨機數。random.randrange(10, 100, 2)在結果上與 random.choice(range(10, 100, 2) 等效。
  5. random.choice(sequence)。參數sequence表示一個有序類型。這裏要說明一下:sequence在python不是一種特定的類型,而是泛指一系列的類型。list, tuple, 字符串都屬於sequence。
  6. random.shuffle(x[, random]),用於將一個列表中的元素打亂。
  7. random.sample(sequence, k),從指定序列中隨機獲取指定長度的片斷。sample函數不會修改原有序列。不會重複選取。

2.numpy.random

numpy的數組不能用上面的隨機函數,numpy也有自己的隨機函數:

1.numpy.random.rand(d0,d1,…,dn)  rand函數根據給定維度生成[0,1)之間的數據,dn表示每個維度,返回值爲指定維度的array

2.numpy.random.randn(d0,d1,…,dn) 返回一個具有標準正態分佈的數組。

3.np.random.randint(low,hihg,size) 生成一個[low,high)的數組,數組形狀爲size。

4.np.random.random_integers(low,hihg,size) 生成一個[low,high]的數組,數組形狀爲size。不過不贊成使用次用法,建議使用np.random.randint(low,hihg,size+1)

5.numpy.random.random((d0,d1,…,dn)) 函數根據給定維度生成[0,1)之間的數據,dn表示每個維度,返回值爲指定維度的array,random函數的功能和前面的rand一模一樣,不過多了個括號。。。

6.random_sample((d0,d1,…,dn)) 用法與numpy.random.random((d0,d1,…,dn)) 一樣。

7.np.random.choice(a, size=None, replace=True, p=None) 對一維數組a採樣,可重複採樣

8.np.random.permutation(x) 將數組打亂,多維數組按第一維度打亂。返回打亂後的數組,不會改變x。

9.np.random.random_sample(x) 將數組x按第一個維度打亂,原地打亂,沒有返回值。

3.隨機種子

random.seed(a=None)

如果不使用隨機種子,那麼每一次隨機的值都是不一樣的,當我們的程序希望生成的隨機數能夠復現的時候,就可以設置 seed()函數,因爲他生成的隨機數是固定的。如果是numpy的隨機種子,那就是np.random.seed()

np.random.seed(10)
b = np.random.randint(1,4,(3,4))
print(b)
c = np.random.randint(1,4,(3,4))
print(c)

當不使用np.random.seed(10)時,b和c每一次的輸出結果都是隨機的。使用隨機種子後,上面程序不管運行多少次,結果都是一樣的,不過b和c的值不一樣,如果我們想讓b和c的值也一樣,可以在給c賦值前重行運行一下相同的隨機種子,這樣b和c的值相同。

np.random.seed(10)
b = np.random.randint(1,4,(3,4))
print(b)
np.random.seed(10)
c = np.random.randint(1,4,(3,4))
print(c)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章