創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!
成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站制作、成都網(wǎng)站設計與策劃設計,托克遜網(wǎng)站建設哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設十多年,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:托克遜等地區(qū)。托克遜做網(wǎng)站價格咨詢:028-86922220今天就跟大家聊聊有關Python利用random模塊生成隨機數(shù),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
一、概述
random模塊
用于生成偽隨機數(shù)
之所以稱之為偽隨機數(shù),是因為真正意義上的隨機數(shù)(或者隨機事件)在某次產(chǎn)生過程中是按照實驗過程中表現(xiàn)的分布概率隨機產(chǎn)生的,其結果是不可預測的,是不可見的。而計算機中的隨機函數(shù)是按照一定算法模擬產(chǎn)生的,其結果是確定的,是可見的。我們可以這樣認為這個可預見的結果其出現(xiàn)的概率是100%。所以用計算機隨機函數(shù)所產(chǎn)生的“隨機數(shù)”并不隨機,是偽隨機數(shù)。
計算機的偽隨機數(shù)是由隨機種子根據(jù)一定的計算方法計算出來的數(shù)值。所以,只要計算方法一定,隨機種子一定,那么產(chǎn)生的隨機數(shù)就是固定的。
只要用戶或第三方不設置隨機種子,那么在默認情況下隨機種子來自系統(tǒng)時鐘。
Python的這個庫在底層使用通用的算法,經(jīng)過長久的考驗,可靠性沒得說,但絕對不能用于密碼相關的功能。
二、基本方法
random.seed(a=None, version=2)
初始化偽隨機數(shù)生成器。如果未提供a或者a=None,則使用系統(tǒng)時間為種子。如果a是一個整數(shù),則作為種子。
random.getstate()
返回一個當前生成器的內(nèi)部狀態(tài)的對象
random.setstate(state)
傳入一個先前利用getstate方法獲得的狀態(tài)對象,使得生成器恢復到這個狀態(tài)。
random.getrandbits(k)
返回一個不大于K位的Python整數(shù)(十進制),比如k=10,則結果在0~2^10之間的整數(shù)。
三、針對整數(shù)的方法
random.randrange(stop)
random.randrange(start, stop[, step])
等同于choice(range(start, stop, step)),但并不實際創(chuàng)建range對象。
random.randint(a, b)
返回一個a <= N <= b的隨機整數(shù)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是累計權重,兩個參數(shù)不能同時存在。
random.shuffle(x[, random])
隨機打亂序列x內(nèi)元素的排列順序。只能針對可變的序列,對于不可變序列,請使用下面的sample()方法。
random.sample(population, k)
從population樣本或集合中隨機抽取K個不重復的元素形成新的序列。常用于不重復的隨機抽樣。返回的是一個新的序列,不會破壞原有序列。要從一個整數(shù)區(qū)間隨機抽取一定數(shù)量的整數(shù),請使用sample(range(10000000), k=60)類似的方法,這非常有效和節(jié)省空間。如果k大于population的長度,則彈出ValueError異常。
五、真值分布
random模塊最高端的功能其實在這里。
random.random()
返回一個介于左閉右開[0.0, 1.0)區(qū)間的浮點數(shù)
random.uniform(a, b)
返回一個介于a和b之間的浮點數(shù)。如果a>b,則是b到a之間的浮點數(shù)。這里的a和b都有可能出現(xiàn)在結果中。
random.triangular(low, high, mode)
返回一個low <= N <=high的三角形分布的隨機數(shù)。參數(shù)mode指明眾數(shù)出現(xiàn)位置。
random.betavariate(alpha, beta)
β分布。返回的結果在0~1之間
random.expovariate(lambd)
指數(shù)分布
random.gammavariate(alpha, beta)
伽馬分布
random.gauss(mu, sigma)
高斯分布
random.lognormvariate(mu, sigma)
對數(shù)正態(tài)分布
random.normalvariate(mu, sigma)
正態(tài)分布
random.vonmisesvariate(mu, kappa)
卡帕分布
random.paretovariate(alpha)
帕累托分布
random.weibullvariate(alpha, beta)
六、可選擇的生成器
class random.SystemRandom([seed])
使用 os.urandom() 方法生成隨機數(shù)的類,由操作系統(tǒng)提供源碼,不一定所有系統(tǒng)都支持
七、典型的例子
>>> random() # 隨機浮點數(shù): 0.0 <= x < 1.0 0.37444887175646646 >>> uniform(2.5, 10.0) # 隨機浮點數(shù): 2.5 <= x < 10.0 3.1800146073117523 >>> randrange(10) # 0-9的整數(shù): 7 >>> randrange(0, 101, 2) # 0-100的偶數(shù) 26 >>> choice(['win', 'lose', 'draw']) # 從序列隨機選擇一個元素 'draw' >>> deck = 'ace two three four'.split() >>> shuffle(deck) # 對序列進行洗牌,改變原序列 >>> deck ['four', 'two', 'ace', 'three'] >>> sample([10, 20, 30, 40, 50], k=4) # 不改變原序列的抽取指定數(shù)目樣本,并生成新序列 [40, 10, 50, 30] >>> # 6次旋轉紅黑綠輪盤(帶權重可重復的取樣),不破壞原序列 >>> choices(['red', 'black', 'green'], [18, 18, 2], k=6) ['red', 'green', 'black', 'black', 'red', 'black'] >>> # 德州撲克計算概率Deal 20 cards without replacement from a deck of 52 playing cards >>> # and determine the proportion of cards with a ten-value >>> # (a ten, jack, queen, or king). >>> deck = collections.Counter(tens=16, low_cards=36) >>> seen = sample(list(deck.elements()), k=20) >>> seen.count('tens') / 20 0.15 >>> # 模擬概率Estimate the probability of getting 5 or more heads from 7 spins >>> # of a biased coin that settles on heads 60% of the time. >>> trial = lambda: choices('HT', cum_weights=(0.60, 1.00), k=7).count('H') >= 5 >>> sum(trial() for i in range(10000)) / 10000 0.4169 >>> # Probability of the median of 5 samples being in middle two quartiles >>> trial = lambda : 2500 <= sorted(choices(range(10000), k=5))[2] < 7500 >>> sum(trial() for i in range(10000)) / 10000 0.7958
看完上述內(nèi)容,你們對Python利用random模塊生成隨機數(shù)有進一步的了解嗎?如果還想了解更多知識或者相關內(nèi)容,請關注創(chuàng)新互聯(lián)-成都網(wǎng)站建設公司行業(yè)資訊頻道,感謝大家的支持。