random模組用於產生偽隨機數,原始碼位置: Lib/random.py
真正意義上的隨機數(或隨機事件)在某次產生過程中是按照實驗過程中表現的分佈機率隨機產生的,其結果是不可預測的,是不可見的。而計算機中的隨機函數是依照某一演算法模擬產生的,其結果是確定的,是可見的。我們可以這樣認為這個可預見的結果其出現的機率是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 39857795a2c2f04affa42abcb8ba0c91b,則是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)
五、可選擇的生成器
class random.SystemRandom([seed])
使用os.urandom() 方法產生隨機數的類,由作業系統提供來源碼,不一定所有系統都支援
以上是random模組在Python哪個版本的詳細內容。更多資訊請關注PHP中文網其他相關文章!