Python+random模塊實(shí)現(xiàn)隨機(jī)抽樣
python的random庫(kù),提供了很多隨機(jī)抽樣方法。
1. 設(shè)置隨機(jī)數(shù)種子 seed()
在適當(dāng)?shù)那樾蜗?,為例保證抽樣的結(jié)果固定,不因多次運(yùn)行而改變,可以設(shè)置隨機(jī)數(shù)種子。
如果不設(shè)置則是以當(dāng)前系統(tǒng)時(shí)間作為隨機(jī)數(shù)種子。
設(shè)置隨機(jī)數(shù)種子使用的是random.seed()方法。代碼示例如下。
import random random.seed(100)
在jupyternotebook中,seed的影響范圍只限于每個(gè)代碼格子內(nèi)。
2. random() 與 randint()
random庫(kù)的random()函數(shù),作為該模塊中其他隨機(jī)方法的基礎(chǔ)。
可以在區(qū)間 [0.0, 1.0) 內(nèi)隨機(jī)生成一個(gè)浮點(diǎn)數(shù)。
如果想要產(chǎn)生其他范圍內(nèi)的浮點(diǎn)數(shù),則可以使用random.uniform(a,b)方法,
以產(chǎn)生[a,b]范圍內(nèi)一個(gè)隨機(jī)浮點(diǎn)數(shù)。
具體示例如下:
random.random()
random庫(kù)的randint()方法則可以在給定區(qū)間內(nèi)隨機(jī)生一個(gè)整數(shù)。(左右邊界值都可以?。?/p>
random.randint(1,2)
輸出效果如下圖所示:
此外,如果使用random.randrange(a,b,step)方法,則還可以在原有基礎(chǔ)上,限制range的步長(zhǎng),再取整數(shù)。
3. sample()方法 無(wú)放回抽樣
sample()方法可以從給定序列中隨機(jī)抽取n個(gè)元素(無(wú)放回抽樣。)
該方法語(yǔ)法如下:
random.sample(population,k)
random.seed(13) listA = ["a", "b", "c"] random.sample(listA,2)
4. choice() 與 choices() 有放回抽樣
choice() 與 choices()可以實(shí)現(xiàn)從給定的序列中進(jìn)行有放回地隨機(jī)抽樣。
其中chioce()只抽一次,而choices() 表示抽取多次。
random.choices()方法的語(yǔ)法如下:
random.choices(population,weights=None,*,cum_weights=None,k=1)
import random listA = ["a", "b", "c"] print(random.choice(listA)) print(random.choices(listA, k=2))
5. shuffle()方法
shuffle()方法可以實(shí)現(xiàn),對(duì)序列的隨機(jī)排序,即打亂原有序列。
random.seed(13) listA = ["a", "b", "c"] random.shuffle(listA) listA
6. 猜拳小案例
看似簡(jiǎn)單樸實(shí)的案例,往往蘊(yùn)含著許多值得參考和借鑒的細(xì)節(jié)。
以猜拳小游戲案例為例,要求是玩家對(duì)電腦,電腦隨機(jī)出,玩家以輸入的方式。
import random while 1: s = int(random.randint(1, 3)) if s == 1: ind = "石頭" elif s == 2: ind = "剪子" elif s == 3: ind = "布" m = input('【猜拳游戲】輸入 石頭、剪子、布猜拳,輸入"end"結(jié)束游戲:\n') blist = ["石頭", "剪子", "布"] if (m not in blist) and (m != 'end'): print ("輸入錯(cuò)誤,請(qǐng)重新輸入!") elif (m not in blist) and (m == 'end'): print ("\n游戲退出中...") print("已退出") break elif m == ind : print ("電腦出了: " + ind + ",平局!") elif (m == '石頭' and ind =='剪子') or (m == '剪子' and ind =='布') or (m == '布' and ind =='石頭'): print ("電腦出了: " + ind +",你贏了!") elif (m == '石頭' and ind =='布') or (m == '剪子' and ind =='石頭') or (m == '布' and ind =='剪子'): print ("電腦出了: " + ind +",你輸了!")
到此這篇關(guān)于Python+random模塊實(shí)現(xiàn)隨機(jī)抽樣的文章就介紹到這了,更多相關(guān)Python random隨機(jī)抽樣內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)WebSocket服務(wù)端過(guò)程解析
這篇文章主要介紹了python實(shí)現(xiàn)WebSocket服務(wù)端過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10關(guān)于Python中Flask全局異常處理流程詳解
Flask是一個(gè)基于Python的Web框架,它提供了全局異常處理的機(jī)制來(lái)捕獲和處理應(yīng)用程序中的異常,本文將詳細(xì)介紹Flask的全局異常處理,并提供相應(yīng)的代碼示例,需要的朋友可以參考下2023-06-06Python 數(shù)據(jù)處理更容易的12個(gè)輔助函數(shù)總結(jié)
Python的產(chǎn)生似乎就是專門用來(lái)處理數(shù)據(jù)的,順理成章的成為大數(shù)據(jù)的主流語(yǔ)言,本文介紹十二個(gè)函數(shù)輔助你更容易更便捷的用Python進(jìn)行數(shù)據(jù)處理2021-11-11Python中使用pypdf2合并、分割、加密pdf文件的代碼詳解
這篇文章主要介紹了Python中使用pypdf2合并、分割、加密pdf文件的代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05python寫入csv時(shí)writerow()和writerows()函數(shù)簡(jiǎn)單示例
這篇文章主要給大家介紹了關(guān)于python寫入csv時(shí)writerow()和writerows()函數(shù)的相關(guān)資料,writerows和writerow是Python中csv模塊中的兩個(gè)函數(shù),用于將數(shù)據(jù)寫入CSV文件,需要的朋友可以參考下2023-07-07