最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python隨機模塊random的22種函數(shù)(小結(jié))

 更新時間:2020年05月15日 10:07:03   作者:Elenstone  
這篇文章主要介紹了python隨機模塊random的22種函數(shù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

  隨機數(shù)可以用于數(shù)學(xué),游戲,安全等領(lǐng)域中,還經(jīng)常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。平時數(shù)據(jù)分析各種分布的數(shù)據(jù)構(gòu)造也會用到。

  random模塊,用于生成偽隨機數(shù),之所以稱之為偽隨機數(shù),是因為真正意義上的隨機數(shù)(或者隨機事件)在某次產(chǎn)生過程中是按照實驗過程中表現(xiàn)的分布概率隨機產(chǎn)生的,其結(jié)果是不可預(yù)測的,是不可見的。而計算機中的隨機函數(shù)是按照一定算法模擬產(chǎn)生的,對于正常隨機而言,會出現(xiàn)某個事情出現(xiàn)多次的情況。

  但是偽隨機在事情觸發(fā)前設(shè)定好,就是這個十個事件各發(fā)生一次,只不過順序不同而已?,F(xiàn)在MP3的隨機列表就是用的偽隨機,把要播放的歌曲打亂順序,生成一個隨機列表而已,每個歌曲都播放一次。真實隨機的話,會有出現(xiàn)某首歌多放次的情況,歌曲基數(shù)越多,重放的概率越大。

注意:random()是不能直接訪問的,需要導(dǎo)入 random 模塊,然后通過 random 靜態(tài)對象調(diào)用該方法。

import random
list(dir(random))
['BPF', 'LOG4','NV_MAGICCONST','RECIP_BPF','Random','SG_MAGICCONST',
'SystemRandom','TWOPI','betavariate','choice','choices','expovariate','gammavariate',
'gauss','getrandbits','getstate','lognormvariate','normalvariate',
'paretovariate','randint','random','randrange','sample','seed',
'setstate','shuffle','triangular','uniform','vonmisesvariate','weibullvariate']

#加載所需要的包
import random
import matplotlib.pyplot as plt
import seaborn as sns

random.random()

描述:random.random() 用于生成一個0到1的隨機符點數(shù): 0 <= n < 1.0
語法:random.random()

#生成一個隨機數(shù)
random.random()
0.7186311708109537

#生成一個4位小數(shù)的隨機列表
[round(random.random(),4) for i in range(10)]
[0.1693, 0.4698, 0.5849, 0.6859, 0.2818, 0.216, 0.1976, 0.3171, 0.2522, 0.8012]

#生成一串隨機數(shù)
for i in range(10):
print(random.random())
0.4386055639247348
0.4394437853977078
0.231862963682833
0.6483168963553342
0.12106581255811855
0.7043874986531355
0.38729519658498623
0.6492256157170393
0.463425050933564
0.2298431522075462

random.choice()

描述:從非空序列seq中隨機選取一個元素。如果seq為空則彈出 IndexError異常。
語法:random.choice( seq)seq 可以是一個列表,元組或字符串。

L = [0,1,2,3,4,5]
random.choice(L)
2

L = 'wofeichangshuai'
random.choice(L)
'h'

random.choices()

描述:從集群中隨機選取k次數(shù)據(jù),返回一個列表,可以設(shè)置權(quán)重。
注意每次選取都不會影響原序列,每一次選取都是基于原序列。也就是有放回抽樣
語法:random.choices(population,weights=None,*,cum_weights=None,k=1)
參數(shù):

  • population:集群。
  • weights:相對權(quán)重。
  • cum_weights:累加權(quán)重。
  • k:選取次數(shù)。
a = [1,2,3,4,5]
random.choices(a,k=5)
[2, 5, 2, 1, 3]

random.choices(a,weights=[0,0,1,0,0],k=5)
[3, 3, 3, 3, 3]

random.choices(a,weights=[1,1,1,1,1],k=5)
[3, 1, 5, 2, 2]

#多次運行,5被抽到的概率為0.5,比其他的都大
random.choices(a,weights=[0.1,0.1,0.2,0.3,0.5],k=5)
[5, 4, 4, 4, 2]
random.choices(a,weights=[0.1,0.1,0.2,0.3,0.5],k=5)
[5, 4, 5, 5, 2]
random.choices(a,weights=[0.1,0.1,0.2,0.3,0.5],k=5)
[5, 2, 2, 5, 5]

random.choices(a,cum_weights=[1,1,1,1,1],k=5)
[1, 1, 1, 1, 1]

對每一條語句不妨各自寫一個循環(huán)語句讓它輸出個十遍八遍的,你就足以看出用法了。

結(jié)論:參數(shù)weights設(shè)置相對權(quán)重,它的值是一個列表,設(shè)置之后,每一個成員被抽取到的概率就被確定了。比如weights=[1,2,3,4,5],那么第一個成員的概率就是P=1/(1+2+3+4+5)=1/15。
cum_weights設(shè)置累加權(quán)重,Python會自動把相對權(quán)重轉(zhuǎn)換為累加權(quán)重,即如果你直接給出累加權(quán)重,那么就不需要給出相對權(quán)重,且Python省略了一步執(zhí)行。比如weights=[1,2,3,4],那么cum_weights=[1,3,6,10],這也就不難理解為什么cum_weights=[1,1,1,1,1]輸出全是第一

random.getrandbits()

描述:返回一個不大于K位的Python整數(shù)(十進制),比如k=10,則結(jié)果在0~2^10之間的整數(shù)。
語法:random.getrandbits(k)

random.getrandbits(10)
379

random.getstate()

描述:返回一個捕獲到的 生成器當前內(nèi)部狀態(tài) 的對象,可以將此對象傳遞給 setstate() 以恢復(fù)到這個狀態(tài)。
語法:random.getstate()

random.setstate()

描述:state 應(yīng)該是從之前調(diào)用 getstate() 獲得的,而 setstate() 將生成器的內(nèi)部狀態(tài)恢復(fù)到調(diào)用 getstate() 時的狀態(tài)。根據(jù)下面的例子可以看出,由于生成器內(nèi)部狀態(tài)相同時會生成相同的下一個隨機數(shù),我們可以使用 getstate() 和 setstate() 對生成器內(nèi)部狀態(tài)進行獲取和重置到某一狀態(tài)下。
語法:random.setstate(state)

state = random.getstate()
random.random()
0.489148634943

random.random()
0.22359638172661822

random.setstate(state)
random.random()
0.48914863494

random.randint()

描述:用于生成一個指定范圍內(nèi)的整數(shù)。
語法:random.randint(a, b),其中參數(shù)a是下限,參數(shù)b是上限,生成的隨機數(shù)n: a <= n <= b

random.randint(1, 8)
3
random.randint(1, 8)
4

random.randrange()

描述:按指定基數(shù)遞增的集合中 獲取一個隨機數(shù)。如:random.randrange(10, 100, 2),結(jié)果相當于從[10, 12, 14, 16, … 96, 98]序列中獲取一個隨機數(shù),random.randrange(10, 100, 2)在結(jié)果上與 random.choice(range(10, 100, 2) 等效。
語法:random.randrange([start], stop[, step])

  • 不指定step,隨機生成[a,b)范圍內(nèi)一個整數(shù)。
  • 指定step,step作為步長會進一步限制[a,b)的范圍,比如randrange(0,11,2)意即生成[0,11)范圍內(nèi)的隨機偶數(shù)。
  • 不指定a,則默認從0開始。
#不限制
[random.randrange(0,11) for i in range(5)]
[4, 6, 3, 9, 5]

#隨機偶數(shù),運行5個數(shù)
[random.randrange(0,11,2) for i in range(5)]
[2, 4, 8, 8, 6]

random.sample()

描述:從population樣本或集合中隨機抽取K個不重復(fù)的元素形成新的序列。常用于不重復(fù)的隨機抽樣。返回的是一個新的序列,不會破壞原有序列。要從一個整數(shù)區(qū)間隨機抽取一定數(shù)量的整數(shù),請使用sample(range(1000000), k=60)類似的方法,這非常有效和節(jié)省空間。如果k大于population的長度,則彈出ValueError異常。
語法:random.sample(population, k)
注意:與random.choices()的區(qū)別:一個是選取k次,一個是選取k個,選取k次的相當于選取后又放回,選取k個則選取后不放回。故random.sample()的k值不能超出集群的元素個數(shù)。

random.sample(range(1000), k=5)
[82, 678, 664, 177, 376]

L = [0,1,2,3,4,5]
random.sample(L,3)
[5, 3, 1]

random.sample(L,3)
[2, 4, 5]

random.seed()

描述:初始化偽隨機數(shù)生成器。如果未提供a或者a=None,則使用系統(tǒng)時間為種子。如果a是一個整數(shù),則作為種子。偽隨機數(shù)生成模塊。如果不提供 seed,默認使用系統(tǒng)時間。使用相同的 seed,可以獲得完全相同的隨機數(shù)序列,常用于算法改進測試。
語法:random.seed(a=None, version=2)

# 生成一個隨機數(shù)迭代器實例,與下列的實例不共享隨機狀態(tài)
a = random.Random()
[a.randint(1, 100) for i in range(20)]
[97, 91, 63, 88, 82, 6, 80, 59, 40, 96, 64, 6, 68, 49, 65, 50, 58, 5, 31, 60]

b = random.Random()
[b.randint(1, 100) for i in range(20)]
[46, 53, 89, 1, 48, 21, 45, 26, 89, 96, 43, 85, 21, 78, 8, 38, 54, 1, 27, 56]

############################################################################
a = random.Random()
# 指定相同的隨機種子,共享隨機狀態(tài)
a.seed(1)
[a.randint(1, 100) for i in range(20)]
[14, 85, 77, 26, 50, 45, 66, 79, 10, 3, 84, 44, 77, 1, 45, 73, 23, 95, 91, 4]

b =random.Random()
# 指定相同的隨機種子,共享隨機狀態(tài)
b.seed(1)
[b.randint(1, 100) for i in range(20)]
[14, 85, 77, 26, 50, 45, 66, 79, 10, 3, 84, 44, 77, 1, 45, 73, 23, 95, 91, 4]

random.shuffle()

描述:用于將一個列表中的元素打亂。只能針對可變的序列,對于不可變序列,請使用下面的sample()方法。
語法:random.shuffle(x)

L = [0,1,2,3,4,5]
random.shuffle(L)
L
[5, 4, 1, 0, 3, 2]

random.uniform()

描述:產(chǎn)生[a,b]范圍內(nèi)一個隨機浮點數(shù)。uniform()的a,b參數(shù)不需要遵循a<=b的規(guī)則,即a小b大也可以,此時生成[b,a]范圍內(nèi)的隨機浮點數(shù)。
語法:random.uniform(x, y)

random.uniform(10, 11)
10.789198208817488

random.triangular()

描述:返回一個low <= N <=high的三角形分布的隨機數(shù)。參數(shù)mode指明眾數(shù)出現(xiàn)位置。
語法:random.triangular(low, high, mode)

data = [random.triangular(2,4,3) for i in range(20000)]
#直方圖
plt.hist(data, bins=100, color="#FF0000", alpha=.7)
#密度圖
sns.kdeplot(data, shade=True,color="#FF0000")

直方圖


密度圖

random.vonmisesvariate()

描述:卡帕分布
語法:vonmisesvariate(mu, kappa)

data = [random.vonmisesvariate(2,2) for i in range(20000)]
#直方圖
plt.hist(data, bins=100, color="#FF0000", alpha=.7)
#密度圖
sns.kdeplot(data, shade=True,color="#FF0000")

直方圖


密度圖

random.weibullvariate()

描述:威布爾分布
語法:random.weibullvariate(alpha, beta)

data = [random.weibullvariate(1,2) for i in range(20000)]
#直方圖
plt.hist(data, bins=100, color="#FF0000", alpha=.7)
sns.kdeplot(data, shade=True,color="#FF0000")

直方圖


密度圖

random.betavariate()

描述: β分布
語法:random.betavariate(alpha, beta)

data = [random.betavariate(1,2) for i in range(20000)]
#直方圖
plt.hist(data, bins=100, color="#FF0000", alpha=.7)
#密度圖
sns.kdeplot(data, shade=True,color="#FF0000")

直方圖


密度圖

random.expovariate()

描述:指數(shù)分布
語法:random.expovariate(lambd)

data = [random.expovariate(2) for i in range(50000)]
#直方圖
plt.hist(data, bins=100, color="#FF0000", alpha=.7)
#密度圖
sns.kdeplot(data, shade=True,color="#FF0000")

直方圖


密度圖

random.gammavariate()

描述: 伽馬分布
語法:random.gammavariate(alpha, beta)

data = [random.gammavariate(2,2) for i in range(50000)]
#直方圖
plt.hist(data, bins=100, color="#FF0000", alpha=.7)
#密度圖
sns.kdeplot(data, shade=True,color="#FF0000")

直方圖


密度圖

random.gauss()

描述:高斯分布
語法:random.gauss(mu, sigma)

data = [random.gauss(2,2) for i in range(50000)]
#直方圖
plt.hist(data, bins=100, color="#FF0000", alpha=.7)
#密度圖
sns.kdeplot(data, shade=True,color="#FF0000")

直方圖


密度圖

random.lognormvariate()

描述:對數(shù)正態(tài)分布
語法:random.lognormvariate(mu, sigma)

data = [random.lognormvariate(4,2) for i in range(50000)]
#直方圖
plt.hist(data, bins=100, color="#FF0000", alpha=.7)
#密度圖
sns.kdeplot(data, shade=True,color="#FF0000")

直方圖


密度圖

random.normalvariate()

描述: 正態(tài)分布
語法:random.normalvariate(mu, sigma)

data = [random.normalvariate(2,4) for i in range(20000)]
#直方圖
plt.hist(data, bins=100, color="#FF0000", alpha=.7)
#密度圖
sns.kdeplot(data, shade=True,color="#FF0000")

直方圖


密度圖

random.paretovariate()

描述:帕累托分布
語法:random.paretovariate(alpha)

data = [random.paretovariate(4) for i in range(50000)]
#直方圖
plt.hist(data, bins=100, color="#FF0000", alpha=.7)
#密度圖
sns.kdeplot(data, shade=True,color="#FF0000")

直方圖


密度圖

到此這篇關(guān)于python隨機模塊random的22種函數(shù)(小結(jié))的文章就介紹到這了,更多相關(guān)python隨機模塊random內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實現(xiàn)的北京積分落戶數(shù)據(jù)分析示例

    Python實現(xiàn)的北京積分落戶數(shù)據(jù)分析示例

    這篇文章主要介紹了Python實現(xiàn)的北京積分落戶數(shù)據(jù)分析,結(jié)合實例形式分析了Python針對北京積分落戶數(shù)據(jù)的分析、運算、展示等相關(guān)操作技巧,需要的朋友可以參考下
    2020-03-03
  • 如何通過一篇文章了解Python中的生成器

    如何通過一篇文章了解Python中的生成器

    生成器指的是生成器對象,可以由生成器表達式得到,也可以使用yield關(guān)鍵字得到一個生成器函數(shù),調(diào)用這個函數(shù)得到一個生成器對象,下面這篇文章主要給大家介紹了關(guān)于Python中生成器的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • python爬蟲中抓取指數(shù)的實例講解

    python爬蟲中抓取指數(shù)的實例講解

    在本篇文章里小編給大家整理了關(guān)于python爬蟲中抓取指數(shù)的實例講解內(nèi)容,有興趣的朋友們學(xué)習(xí)下。
    2020-12-12
  • python argparse命令行參數(shù)解析(推薦)

    python argparse命令行參數(shù)解析(推薦)

    Python argparse模塊是解析命令行參數(shù)的首選方法。解析命令行參數(shù)是一個非常常見的任務(wù),Python腳本根據(jù)傳遞的值來執(zhí)行和操作
    2021-06-06
  • python-opencv在有噪音的情況下提取圖像的輪廓實例

    python-opencv在有噪音的情況下提取圖像的輪廓實例

    下面小編就為大家?guī)硪黄猵ython-opencv在有噪音的情況下提取圖像的輪廓實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Python實現(xiàn)ATM系統(tǒng)

    Python實現(xiàn)ATM系統(tǒng)

    這篇文章主要為大家詳細介紹了Python實現(xiàn)ATM系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • Python實現(xiàn)PS濾鏡功能之波浪特效示例

    Python實現(xiàn)PS濾鏡功能之波浪特效示例

    這篇文章主要介紹了Python實現(xiàn)PS濾鏡功能之波浪特效,結(jié)合實例形式分析了Python實現(xiàn)PS濾鏡波浪特效的原理與相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • python中的flask框架Jinja?模板入門教程

    python中的flask框架Jinja?模板入門教程

    這篇文章主要介紹了?python中的flask框架Jinja?模板入門,Jinja?模板其實是?html?文件,一般情況下放在?Flask?工程的?/templates?目錄下,對python?flask?Jinja?模板相關(guān)知識感興趣的朋友一起看看吧
    2022-04-04
  • Python 輸入一個數(shù)字判斷成績分數(shù)等級的方法

    Python 輸入一個數(shù)字判斷成績分數(shù)等級的方法

    今天小編就為大家分享一篇Python 輸入一個數(shù)字判斷成績分數(shù)等級的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Django與JS交互的示例代碼

    Django與JS交互的示例代碼

    本篇文章主要介紹了Django與JS交互的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08

最新評論

尖扎县| 宿迁市| 井研县| 日照市| 西乌珠穆沁旗| 宜兴市| 稷山县| 邓州市| 元阳县| 马公市| 兴国县| 怀柔区| 定日县| 阿尔山市| 望奎县| 长沙市| 龙陵县| 文山县| 洛浦县| 台东县| 山丹县| 颍上县| 晋城| 洪洞县| 平果县| 扎兰屯市| 和顺县| 虞城县| 龙岩市| 祁连县| 芦山县| 桃园市| 海宁市| 柏乡县| 蚌埠市| 滨州市| 临漳县| 乐清市| 南木林县| 蒲江县| 洛浦县|