99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀python隨機(jī)模塊22個(gè)函數(shù)詳解(上)
python隨機(jī)模塊22個(gè)函數(shù)詳解(上)
2020-10-28
收藏


作者:小伍哥

來源: AI入門學(xué)習(xí)

今天給大家纖細(xì)介紹下python中的隨機(jī)模塊,隨機(jī)數(shù)可以用于數(shù)學(xué),游戲,安全等領(lǐng)域中,還經(jīng)常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。平時(shí)數(shù)據(jù)分析各種分布的數(shù)據(jù)構(gòu)造也會(huì)用到。

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

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

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

import randomlist(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

01 random

描述:random.random() 用于生成一個(gè)0到1的隨機(jī)符點(diǎn)數(shù): 0 <= n < 1>

語(yǔ)法:random.random()

#生成一個(gè)隨機(jī)數(shù)
random.random()
0.7186311708109537
#生成一個(gè)4位小數(shù)的隨機(jī)列表
[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]
#生成一串隨機(jī)數(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

02 choice

描述:從非空序列seq中隨機(jī)選取一個(gè)元素。如果seq為空則彈出 IndexError異常。

語(yǔ)法:random.choice( seq)seq 可以是一個(gè)列表,元組或字符串。

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

03 choices

描述:集群中隨機(jī)選取k次數(shù)據(jù),返回一個(gè)列表,可以設(shè)置權(quán)重。

注意每次選取都不會(huì)影響原序列,每一次選取都是基于原序列。

語(yǔ)法:random.choices(population,weights=None,*,cum_weights=None,k=1)

參數(shù):

  • population:集群。
  • weights:相對(duì)權(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]
#多次運(yùn)行,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]
對(duì)每一條語(yǔ)句不妨各自寫一個(gè)循環(huán)語(yǔ)句讓它輸出個(gè)十遍八遍的,你就足以看出用法了。
結(jié)論:參數(shù)weights設(shè)置相對(duì)權(quán)重,它的值是一個(gè)列表,
設(shè)置之后,每一個(gè)成員被抽取到的概率就被確定了。
比如weights=[1,2,3,4,5],那么第一個(gè)成員的概率就是P=1/(1+2+3+4+5)=1/15。
cum_weights設(shè)置累加權(quán)重,python會(huì)自動(dòng)把相對(duì)權(quán)重轉(zhuǎn)換為累加權(quán)重,
即如果你直接給出累加權(quán)重,那么就不需要給出相對(duì)權(quán)重,且Python省略了一步執(zhí)行。
比如weights=[1,2,3,4],那么cum_weights=[1,3,6,10],
這也就不難理解為什么cum_weights=[1,1,1,1,1]輸出全是第一。

04 getrandbits

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

語(yǔ)法:random.getrandbits(k)

random.getrandbits(10)
379

05 getstate

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

語(yǔ)法:random.getstate()

06 setstate

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

語(yǔ)法:random.setstate(state)

state = random.getstate()
random.random()
0.489148634943
random.random()
0.22359638172661822
random.setstate(state)
random.random()
0.48914863494

07 randint

描述:用于生成一個(gè)指定范圍內(nèi)的整數(shù)。

語(yǔ)法:random.randint(a, b),其中參數(shù)a是下限,參數(shù)b是上限,生成的隨機(jī)數(shù)n: a <= n <= b?

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

08 randrange

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

語(yǔ)法:random.randrange([start], stop[, step])

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

09 sample

描述:從population樣本或集合中隨機(jī)抽取K個(gè)不重復(fù)的元素形成新的序列。常用于不重復(fù)的隨機(jī)抽樣。返回的是一個(gè)新的序列,不會(huì)破壞原有序列。要從一個(gè)整數(shù)區(qū)間隨機(jī)抽取一定數(shù)量的整數(shù),請(qǐng)使用sample(range(1000000), k=60)類似的方法,這非常有效和節(jié)省空間。如果k大于population的長(zhǎng)度,則彈出ValueError異常。

語(yǔ)法:random.sample(population, k)

注意:與random.choices()的區(qū)別:一個(gè)是選取k次,一個(gè)是選取k個(gè),選取k次的相當(dāng)于選取后又放回,選取k個(gè)則選取后不放回。故random.sample()的k值不能超出集群的元素個(gè)數(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]

10 seed

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

語(yǔ)法:random.seed(a=None, version=2)

a = random.Random()
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()
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]

11 shuffle

描述:用于將一個(gè)列表中的元素打亂。只能針對(duì)可變的序列,對(duì)于不可變序列,請(qǐng)使用下面的sample()方法。

語(yǔ)法:random.shuffle(x)

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



——熱門課程推薦:

想從事業(yè)務(wù)型數(shù)據(jù)分析師,您可以點(diǎn)擊>>>“數(shù)據(jù)分析師”了解課程詳情;

想從事數(shù)據(jù)分析師,您可以點(diǎn)擊>>>“大數(shù)據(jù)就業(yè)”了解課程詳情;

想成為人工智能工程師,您可以點(diǎn)擊>>>“人工智能就業(yè)”了解課程詳情;

想了解Python數(shù)據(jù)分析,您可以點(diǎn)擊>>>“Python數(shù)據(jù)分析師”了解課程詳情;

想咨詢互聯(lián)網(wǎng)運(yùn)營(yíng),你可以點(diǎn)擊>>>互聯(lián)網(wǎng)運(yùn)營(yíng)就業(yè)班”了解課程詳情;

想了解更多優(yōu)質(zhì)課程,請(qǐng)點(diǎn)擊>>>



數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }