首頁 > 軟體

Python+random模組實現隨機抽樣

2022-10-02 14:00:19

python的random庫,提供了很多隨機抽樣方法。

1. 設定亂數種子 seed()

在適當的情形下,為例保證抽樣的結果固定,不因多次執行而改變,可以設定亂數種子。

如果不設定則是以當前系統時間作為亂數種子。

設定亂數種子使用的是random.seed()方法。程式碼範例如下。

import random
random.seed(100)

在jupyternotebook中,seed的影響範圍只限於每個程式碼格子內。

2. random() 與 randint()

random庫的random()函數,作為該模組中其他隨機方法的基礎。

可以在區間 [0.0, 1.0) 內隨機生成一個浮點數。

如果想要產生其他範圍內的浮點數,則可以使用random.uniform(a,b)方法,

以產生[a,b]範圍內一個隨機浮點數。

具體範例如下:

random.random()

random庫的randint()方法則可以在給定區間內隨機生一個整數。(左右邊界值都可以取)

random.randint(1,2)

輸出效果如下圖所示:

此外,如果使用random.randrange(a,b,step)方法,則還可以在原有基礎上,限制range的步長,再取整數。

3. sample()方法 無放回抽樣

sample()方法可以從給定序列中隨機抽取n個元素(無放回抽樣。)

該方法語法如下:

random.sample(population,k)

random.seed(13)
listA = ["a", "b", "c"]
random.sample(listA,2)

4. choice() 與 choices() 有放回抽樣

choice() 與 choices()可以實現從給定的序列中進行有放回地隨機抽樣。

其中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()方法可以實現,對序列的隨機排序,即打亂原有序列。

random.seed(13)
listA = ["a", "b", "c"]
random.shuffle(listA)
listA

6. 猜拳小案例

看似簡單樸實的案例,往往蘊含著許多值得參考和借鑑的細節。

以猜拳小遊戲案例為例,要求是玩家對電腦,電腦隨機出,玩家以輸入的方式。

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"結束遊戲:n')
    blist = ["石頭", "剪子", "布"]
    if (m not in blist) and (m != 'end'):
        print ("輸入錯誤,請重新輸入!")
    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 +",你輸了!")

到此這篇關於Python+random模組實現隨機抽樣的文章就介紹到這了,更多相關Python random隨機抽樣內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com