random——僞隨機數生成模塊

random——僞隨機數生成模塊html

轉自:https://blog.csdn.net/zhtysw/article/details/79978197算法

       該模塊包含構造僞隨機數生成器的多個方法。對於整數,僞隨機數有統一的選擇範圍;對於序列,選擇的隨機元素有統一標準,一個是在當前列表中進行隨機排序,另外一個是從種子樣本中隨機生成一個序列。app

       實際應用中,該模塊有專用函數生成符合均勻分佈、正態分佈、對數分佈、負指數分佈、伽馬分佈、貝塔分佈的函數。對於生成角,只支持馮·米塞斯分佈。幾乎全部的模塊函數都依賴於基本函數random(),該函數在半開放範圍[0.0,1.0)內均勻地生成隨機浮點數。Python使用Mersenne Twister做爲核心生成器。它生成53位精度浮點數,週期爲2 ** 19937-1。dom

1. 簿記函數函數

random. seed(a=None, version=2)spa

       初始化隨機數生成器。若是a被省略或被賦值爲None,則使用當前系統時間爲隨機源;若是當前操做系統提供隨機數源,其優先級高於系統時間。若是a是一個整數,那麼直接使用它。操作系統

 

random.getstate().net

       捕獲當前隨機數生成器的內部狀態,並將其返回。線程

 

random.setstate(state)orm

       state應當爲在調用該函數以前調用getstate()函數時獲取的生成器狀態值,而且在執行setatate()後,生成器將會回到之前那個狀態。

 

random. getrandbits(k)

       返回一個k位的整數,該整數每位都由隨機數構成。

 

2. 針對整數的隨機函數

random. randrange(stop)

random. randrange(start, stop[, step])

       該函數等價於choice(range(start, stop, step))或choice(range(stop))意味着給出的隨機值屬於後面參數定義的值的範圍內。

 

random.randint(a, b)

       返回一個隨機整數,這個整數大於等於a小於等於b。

3. 針對序列的隨機函數

random.choice(seq)

       從非空序列seq中隨機返回一個元素。

 

random. choice(population, weights=None, *, cum_weights=None, k=1)

       從population中隨機選擇k個可修改的元素組成一個新的列表,並將其返回。population不能爲空。若是weights(權重序列)被給出,選擇將會根據相應的權重規劃而進行。若是cum_weights被給出,選擇將會依據累計權重的方式進行。(相似於:權重序列爲[1,2,3,4],累計下來的結果是[1,3,6,10])。

 

random. shuffle(x[, random])

       將序列x隨機混合。可選參數random爲0參數函數,它會隨機返回[0.0, 1.0)內的一個浮點數。

 

random.sample(population, k)

       從population這個序列或集合中隨機選擇非重複的k個元素組成一個新的列表,該函數用於非替換的隨機取樣樣本。

 

4. 實數域內機率分佈模型所對應函數

       該模塊內的隨機函數,其輸出的隨機值符合其函數名所示的機率分佈模型。

random.random()

       從[0.0, 1.0)中隨機返回一個浮點數。

 

random.uniform(a, b)

       從a與b肯定的範圍中隨機返回一個浮點數。

 

random.triangular(low, high, mode)

       返回一個隨機浮點數N,low<=N<=high,而且mode必定在這個範圍內。mode被定義爲該區間的重點,給出以它爲中點的對稱分佈。

 

random.betavariate(alpha, beta)

       Beta(β)分佈,兩個參數必須都大於零,返回值在0與1之間。

 

random.expovariate(lambd)

       指數分佈,lambd爲1.0處於該分佈被指望的均值。

 

random. gammavariate(alpha, beta)

       Gamma(伽馬γ)分佈,參數必須大於零。分佈函數等價於:

         x ** (alpha -1) * math.exp(-x / beta)

pdf(x) =  --------------------------------------

            math.gamma(alpha) * beta ** alpha

 

random.gauss(mu, sigma)

       高斯(正態)分佈,mu是均值,sigma是標準差。

 

random. lognormvariate(mu, sigma)

       對數正態分佈。若是你在這個分佈中採起天然對數,你會獲得一個均值爲mu,標準差爲sigma的正態分佈。

 

random. normalvariate(mu, sigma)

       正態分佈,比gauss(mu, signa)實現的慢。

 

random.vonmisesvariate(mu, kappa)

       馮米塞斯分佈。mu是角的平均弧度,範圍[0, 2*pi];kappa是密度參數,它必須大於等於0。當kappa等於0時,該分佈退化爲[0, 2*pi]上的標準隨機分佈。

 

random. paretovariate(alpha)

       帕累託分佈,alpha是形狀參數。

 

random. weibullvariate(alpha, beta)

       威布爾分佈,alpha爲規模參數,beta是形狀參數。

 

5. 替代產生器

class random. System([seed])

       使用os.urandom()函數從操做系統提供的源生成隨機數的類。不適用於全部系統。不依賴於軟件狀態,而且序列不可重現。所以,seed()方法不起做用並被忽略。若是調用getstate()和setstate()方法會引起NotImplementedError。

6. 重複性說明

       有時候可以重現僞隨機數生成器產生的序列是十分有用的。經過重複使用隨機數種子值,只要多個線程沒有運行,相同的序列應該在一次又一次的運行中再現。

       在Python的版本中,大多數的隨機模塊實現的算法和種子函數都發生了必定的改變,但有兩方面與其餘程序中的隨機模塊沒有差異:

①若是一個新的種子模塊被添加,那麼將配置一個向後兼容的播種機;

②若是給出相同的種子,生成器的random()模塊會生成一樣的序列。

相關文章
相關標籤/搜索