Python+random模塊實現隨機抽樣

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隨機抽樣內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: