[Python模組]隨機數 random模組的速查與使用
阿新 • • 發佈:2018-11-16
模組介紹
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