1. 程式人生 > >[Python模組]隨機數 random模組的速查與使用

[Python模組]隨機數 random模組的速查與使用

模組介紹

Random模組提供各種用於生成偽隨機數的函式,以及根據不同的實數分佈來隨機生成值的函式.雖然這些函式生成的數字好像是完全隨機的,但是它們背後的系統是可預測的.如果要求真正隨機數用於加密安全等相關功能,應左轉模組os中的函式urandom
本模組的函式來源於Python3.7.1

1.種子,初始化相關

用於控制基礎隨機數生成器的狀態.

函式 描述
getstate() 返回表示當前生成器狀態的物件.稍後將該物件傳遞到setstate()來恢復狀態
seed([x]) 初始化隨機數生成器.x是(正)整數;如果省略x或x=None,則使用系統時間初始化;如果x非整數,則必須是可雜湊物件並將hash(x)作為種子
setstate() getstate()返回的物件中恢復隨機數生成的狀態

2.隨機整數相關

用於操作隨機整數

函式 描述
getrandbits(k) 建立包含k個隨機位的長整數
randint(a,b)
返回[a,b]中一個隨機整數
randrange([start],stop,[step]) 從range(start,stop,step)中隨機選擇一個數,不包括結束值

3.隨機序列相關

用於產生隨機序列資料

函式 描述
choice(seq) 從非空序列seq中選取一個元素
choices(seq[, weights[,cum]]) ,使用權重weight和累加權重cum從非空序列seq中選取一個元素,如果兩者都未指定,則以相同概率進行選擇
sample(seq,n) 從序列seq中隨機選擇n個值不同的元素
shuffle(seq[,random]) 隨機打亂序列seq,random是可選引數,指定隨機的生成函式

4.實數隨機分佈

生成實數的隨機數.分佈和引數名與概率和統計中使用的標準名稱一致

函式 描述
betavariate(alpha,beta) 貝塔分佈,alpha>-1,beta>-1,返回值範圍(0,1)
expovariate(labmd) 指數分佈,lambd是由1.0除以預期均值.返回值範圍[0,+∞)
gammavariate(alpha,beta) 伽瑪分佈,alpha>-1,beta>0
gauss(mu,sigma) 高斯分佈,均值為mu,標準差為sigma
lognormvariatemu,sigma() 對數正態分佈,對該分佈取自然對數得到均值為mu,標準差為sigma的正態分佈
normalvariate(mu,sigma) 正態分佈,均值為mu,標準差為sigma
paretovariate(alpha) Pareto分佈,形狀引數為alpha
random() 返回[0.0,1.0)中一個隨機實數
uniform(a,b) 返回[a,b]中一個隨機實數
triangular([low [,high [,mode]]]) 三角分佈.隨機數範圍[low,high),模式為mode.預設low=0,high=1.0 ,mode設定為low和high的中點值
vonmisesvariate(mu,kappa) von Mises分佈,mu是平均角,弧度範圍在0~2*pi,kappa是非負集中因子.如果kappa=0,則該分佈簡化為統一隨機角,範圍在0~2*pi
weibullvariate(alpha,beta) Weibull分佈,比例引數為alpha,形狀引數為beta.

注意

1.該模組中的函式都不是執行緒安全的.如果在不同執行緒中生成隨機數,就應當使用鎖定以防止併發訪問.
2.該模組生成的隨機數都是確定的,不應用於摩瑪
3.隨機數生成的區間(在數值開始重複之前)是219937-1