更多大數據分析、建模等內容請關注公眾號《bigdatamodeling》
在實現算法時經常會用到隨機數,有時會忘記各種隨機數的生成方法,這里對Python中的隨機數生成方法進行匯總,以供以后查閱。
import numpy as np
# 兩者實現的作用是一樣的,都是使每次隨機生成數一樣
np.random.seed(10)
np.random.RandomState(10)
### 正態分布 np.random.normal(loc=0.0, scale=1.0, size=None)
np.random.normal() # 返回標量 ~N(0,1)
np.random.normal(1) # 返回標量 ~N(0,1)
np.random.normal(size=(2, 2)) # 返回N(0,1)
np.random.normal(0, 1, size=(2, 2)) # 同上
np.random.normal(2, 10, size=(2, 2))
### 標準正態分布N(0,1)
np.random.randn() # 生成標量
np.random.randn(1)
np.random.randn(2)
np.random.randn(2, 2)
5 * np.random.randn(2, 2) + 10
### 從均勻分布([low, high):半開區間)中進行采樣
np.random.uniform(low=1, high=5, size=(2, 2))
np.random.uniform(1, 5, 10)
np.random.uniform(1, 5) # 生成[1, 5)中的1個標量
### 從均勻分布([0, 1):半開區間)中進行采樣
np.random.rand() # 生成標量
np.random.rand(1)
np.random.rand(2, 2)
### 生成半開半閉區間[low,high)上離散均勻分布的整數值;若high=None,則取值區間變為[0,low)
np.random.randint(low=1, high=5, size=(2, 2))
np.random.randint(low=1, high=5, size=10)
np.random.randint(1, 5, 10) # 同上
np.random.randint(low=5, size=10)
np.random.randint(1, 5) # 生成[1, 5)中的1個標量
### 生成閉區間[low,high]上離散均勻分布的整數值;若high=None,則取值區間變為[1,low]
np.random.random_integers(low=1, high=5, size=(2, 2))
np.random.random_integers(low=1, high=5, size=10)
np.random.random_integers(1, 5, 10) # 同上
np.random.random_integers(low=5, size=10)
np.random.random_integers(1, 5) # 生成[1, 5]中的1個標量
### np.random.random 等價于 np.random.random_sample
# 返回[0,1)之間的隨機數
np.random.random() # 返回標量
np.random.random(1)
np.random.random(2)
np.random.random((2, 3))
### numpy.random.choice(a, size=None, replace=True, p=None)
# Generates a random sample from a given 1-D array
# 從數組a中選擇,若a是整數,則從np.arange(a)中選擇
# replace代表放回與否
# p為數組中每個元素被選中的概率,為空則表示均勻分布
np.random.choice(5, 3)
np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
np.random.choice(5, 3, replace=False)
np.random.choice(5, 3, replace=False, p=[0.1, 0, 0.3, 0.6, 0])
arr = ['pooh', 'rabbit', 'piglet', 'Christopher']
np.random.choice(arr, 5, p=[0.5, 0.1, 0.1, 0.3])
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。