扣丁學堂簡述Python隨機數如何生成模塊random

對於Python隨機數如何生成模塊random的方式,相信小夥伴們或多或少知道一些,每個Python開發工程師都耳熟能詳,但是具體的是什麼?今天就讓我們扣丁學堂爲你詳細講解。  


一、概述  
random模塊用於生成僞隨機數之所以稱之爲僞隨機數,是因爲真正意義上的隨機數(或者隨機事件)在某次產生過程中是按照實驗過程中表現的分佈概率隨機產生的,其結果是不可預測的,是不可見的。而計算機中的隨機函數是按照一定算法模擬產生的,其結果是確定的,是可見的。我們可以這樣認爲這個可預見的結果其出現的概率是100%。所以用計算機隨機函數所產生的“隨機數”並不隨機,是僞隨機數。計算機的僞隨機數是由隨機種子根據一定的計算方法計算出來的數值。所以,只要計算方法一定,隨機種子一定,那麼產生的隨機數就是固定的。只要用戶或第三方不設置隨機種子,那麼在默認情況下隨機種子來自系統時鐘。  
Python的這個庫在底層使用通用的算法,經過長久的考驗,可靠性沒得說,但絕對不能用於密碼相關的功能。  
二、基本方法  
random.seed(a=None,version=2)  
初始化僞隨機數生成器。如果未提供a或者a=None,則使用系統時間爲種子。如果a是一個整數,則作爲種子。  
random.getstate()  
返回一個當前生成器的內部狀態的對象  
random.setstate(state)  
傳入一個先前利用getstate方法獲得的狀態對象,使得生成器恢復到這個狀態。  
random.getrandbits(k)  
返回一個不大於K位的Python整數(十進制),比如k=10,則結果在0~2^10之間的整數。  
三、針對整數的方法  
random.randrange(stop)  
random.randrange(start,stop[,step])等同於choice(range(start,stop,step)),但並不實際創建range對象。  
random.randint(a,b)  
返回一個a<=N<=b的隨機整數N。等同於randrange(a,b+1)  
四、針對序列類結構的方法  
random.choice(seq)  
從非空序列seq中隨機選取一個元素。如果seq爲空則彈出IndexError異常。  
random.choices(population,weights=None,*,cum_weights=None,k=1)  
3.6版本新增。從population集羣中隨機抽取K個元素。weights是相對權重列表,cum_weights是累計權重,兩個參數不能同時存在。  
random.shuffle(x[,random])  
隨機打亂序列x內元素的排列順序。只能針對可變的序列,對於不可變序列,請使用下面的sample()方法。  
random.sample(population,k)  
從population樣本或集合中隨機抽取K個不重複的元素形成新的序列。常用於不重複的隨機抽樣。返回的是一個新的序列,不會破壞原有序列。要從一個整數區間隨機抽取一定數量的整數,請使用sample(range(10000000),k=60)類似的方法,這非常有效和節省空間。如果k大於population的長度,則彈出ValueError異常。  
五、真值分佈  
random模塊最高端的功能其實在這裏。  
random.random()  
返回一個介於左閉右開[0.0,1.0)區間的浮點數  
random.uniform(a,b)  
返回一個介於a和b之間的浮點數。如果a>b,則是b到a之間的浮點數。這裏的a和b都有可能出現在結果中。  
random.triangular(low,high,mode)  
返回一個low<=N<=high的三角形分佈的隨機數。參數mode指明衆數出現位置。  
random.betavariate(alpha,beta)  
β分佈。返回的結果在0~1之間  
random.expovariate(lambd)  
指數分佈  
random.gammavariate(alpha,beta)  
伽馬分佈  
random.gauss(mu,sigma)  
高斯分佈  
random.lognormvariate(mu,sigma)  
對數正態分佈  
random.normalvariate(mu,sigma)  
正態分佈  
random.vonmisesvariate(mu,kappa)  
卡帕分佈  
random.paretovariate(alpha)  
帕累託分佈  
random.weibullvariate(alpha,beta)  
六、可選擇的生成器  
classrandom.SystemRandom([seed])  
使用os.urandom()方法生成隨機數的類,由操作系統提供源碼,不一定所有系統都支持  
想要學習熱門語言Python一定要選擇專業的培訓機構,扣丁學堂成立多年,一直秉承用良心做教育的理念,不僅有專業的老師和與時俱進的課程體系,還有大量的Python視頻教程供學員觀看學習,想要在2018獲得高薪的小夥伴們抓緊時間行動吧。扣丁學堂Python技術交流羣:279521237。  

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