Python+random模塊實(shí)現(xiàn)隨機(jī)抽樣
python的random庫,提供了很多隨機(jī)抽樣方法。

1. 設(shè)置隨機(jī)數(shù)種子 seed()
在適當(dāng)?shù)那樾蜗拢瑸槔WC抽樣的結(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庫的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庫的randint()方法則可以在給定區(qū)間內(nèi)隨機(jī)生一個(gè)整數(shù)。(左右邊界值都可以?。?/p>
random.randint(1,2)
輸出效果如下圖所示:

此外,如果使用random.randrange(a,b,step)方法,則還可以在原有基礎(chǔ)上,限制range的步長,再取整數(shù)。
3. sample()方法 無放回抽樣
sample()方法可以從給定序列中隨機(jī)抽取n個(gè)元素(無放回抽樣。)
該方法語法如下:
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()方法的語法如下:
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. 猜拳小案例
看似簡單樸實(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)文章
matplotlib部件之矩形選區(qū)(RectangleSelector)的實(shí)現(xiàn)
這篇文章主要介紹了matplotlib部件之矩形選區(qū)(RectangleSelector)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
使用python進(jìn)行時(shí)間序列預(yù)測的流程
使用 Python 進(jìn)行時(shí)間序列預(yù)測是一個(gè)非常常見的任務(wù),可以應(yīng)用于各種領(lǐng)域,時(shí)間序列預(yù)測的方法有很多,包括統(tǒng)計(jì)方法、機(jī)器學(xué)習(xí)方法、以及深度學(xué)習(xí)方法,下面是一個(gè)簡單的時(shí)間序列預(yù)測流程示例,需要的朋友可以參考下2024-09-09
Python實(shí)現(xiàn)的遞歸神經(jīng)網(wǎng)絡(luò)簡單示例
這篇文章主要介紹了Python實(shí)現(xiàn)的遞歸神經(jīng)網(wǎng)絡(luò),是一篇摘錄自github代碼片段的文章,涉及Python遞歸與數(shù)學(xué)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2017-08-08
python3.6.4安裝opencv3.4.2的實(shí)現(xiàn)
這篇文章主要介紹了python3.6.4安裝opencv3.4.2的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
Python+Socket實(shí)現(xiàn)基于UDP協(xié)議的局域網(wǎng)廣播功能示例
這篇文章主要介紹了Python+Socket實(shí)現(xiàn)基于UDP協(xié)議的局域網(wǎng)廣播功能,結(jié)合實(shí)例形式分析了Python+socket實(shí)現(xiàn)UDP協(xié)議廣播的客戶端與服務(wù)器端功能相關(guān)操作技巧,需要的朋友可以參考下2017-08-08
Python基礎(chǔ)之變量基本用法與進(jìn)階詳解
這篇文章主要介紹了Python基礎(chǔ)之變量基本用法與進(jìn)階,結(jié)合實(shí)例形式詳細(xì)分析了Python變量引用、可變和不可變類型、局部變量和全局變量等相關(guān)原理與使用技巧,需要的朋友可以參考下2020-01-01

