以下所有內(nèi)容來(lái)源于random Documentation匕荸。
random庫(kù)實(shí)現(xiàn)了不同分布的偽隨機(jī)數(shù)生成器核芽。該模塊的幾乎所有函數(shù)均依賴于基本函數(shù)random()函數(shù)耘斩,該函數(shù)在半開區(qū)間[0.0, 1.0)等概率地產(chǎn)生一個(gè)隨機(jī)浮點(diǎn)數(shù)惫恼。Python使用 Mersenne Twister算法作為核心生成器鲸沮。作為目前使用最廣泛的久經(jīng)考驗(yàn)的偽隨機(jī)數(shù)生成器之一琳骡,其具有很多優(yōu)點(diǎn),But being completely determistic(不知道怎么得體的翻譯)讼溺,它并不具有普適性楣号,尤其是密碼領(lǐng)域完全不適用。
該模塊的所有函數(shù)均是random.Random類的實(shí)例的方法怒坯,所以炫狱,可以實(shí)例化該類來(lái)不共享隨機(jī)種子,這種方式尤其適用于多線程程序剔猿。也可以以該類為父類實(shí)現(xiàn)自己的類從而使用其他的隨機(jī)數(shù)生成器视译,只需要覆寫random(), seed(), getstate(), setstate(), jumpahead()函數(shù)。也可以提供getrandbits函數(shù)從而使用randrange()函數(shù)归敬。
注意:該模塊不能被適用于安全目的酷含,應(yīng)該使用os.urandom()或者SystemRandom如果需要密碼安全偽隨機(jī)數(shù)生成器。
下面為函數(shù)的說(shuō)明:
random.seed(a=None) # 初始化隨機(jī)數(shù)生成器的內(nèi)部狀態(tài)汪茧;
getstate(), setstate(), jumpahead(), getrandbits(k)
# 整數(shù)函數(shù):
randrange(start, stop[, step]) # 返回一個(gè)從range(start, stop, step)隨機(jī)選擇的元素椅亚, 等價(jià)于choice(range(start, stop, step),但不創(chuàng)建range對(duì)象舱污;
randint(a, b) # 返回一個(gè)位于區(qū)間[a, b]的一個(gè)隨機(jī)整數(shù);
choice(seq) # 返回非空序列中的一個(gè)隨機(jī)元素扩灯,如果序列為空媚赖,拋出IndexError錯(cuò)誤。
shuffle(x[, ramdom]) # 就地交換序列x(可以用于洗牌)注意珠插,即使對(duì)于較小長(zhǎng)度的序列x惧磺,其組合情況極多,可能會(huì)大于隨機(jī)數(shù)生成器的范圍捻撑。
sample(population, k) # 返回從population中選擇的k無(wú)重復(fù)元素列表豺妓,用于模擬不放回隨機(jī)采樣惜互。(或許可以用來(lái)發(fā)牌)
# 實(shí)數(shù)函數(shù):
random() # 返回[0.0, 1.0)內(nèi)的隨機(jī)浮點(diǎn)數(shù)
uniform(a, b) # 均勻分布 相當(dāng)于a+(b-a)*random()
triangular(low, high, mode) # 下限, 上限琳拭, 眾數(shù)训堆。
betavariate(alpha, beta) # beta分布
expovariate(lambd) # 指數(shù)分布
gammavariate(alpha, beta) # Gamma分布
gauss(mu, sigma) # 高斯分布,比normalvariate()更快
lognormvariate(mu, sigma) # 對(duì)數(shù)正態(tài)分布
normalvariate(mu, sigma) # 正態(tài)分布
vonmisesvariate(mu, kappa) #
paretovariate(alpha) # Pareto分布
weibullvariate(alpha, beta) # Weibull分布
示例:
示例