Python random模組下的常用函式小結

2021-10-13 15:23:10 字數 2690 閱讀 1530

1.random.random()

隨機生成乙個[0,1)之間的浮點數。
2.random.randint(a,b)

隨機生成[a,b]範圍內乙個整數。
3.random.randrange(a,b,step)

不指定step,隨機生成[a,b)範圍內乙個整數。

指定step,step作為步長會進一步限制[a,b)的範圍,比如randrange(0,11,2)意即生成[0,11)範圍內的隨機偶數。

不指定a,則預設從0開始。

4.random.uniform(a,b)

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

uniform()的a,b引數不需要遵循a<=b的規則,即a小b大也可以,此時生成[b,a]範圍內的隨機浮點數。但如果上面的三個方法採用這種方式就會產生typeerror或者valueeeeor錯誤。

5.random.choice(seq)

從非空序列中隨機選取乙個資料並帶回,該序列可以是list、tuple、str、set。

如果序列為空,則彈出indexerror錯誤。

import random

print(random.choice('biu')) #u

6.random.choices(population,weights=none,*,cum_weights=none,k=1)

python3.6版本新增。

population:集群。

weights:相對權重。

cum_weights:累加權重。

k:選取次數。

作用:從集群中隨機選取k次資料,返回乙個列表,可以設定權重。

注意每次選取都不會影響原序列,每一次選取都是基於原序列。

關於random.choices()函式我舉幾個例子:

import random

a = [1,2,3,4,5]

#1print(random.choices(a,k=5))

#2print(random.choices(a,weights=[0,0,1,0,0],k=5))

#3print(random.choices(a,weights=[1,1,1,1,1],k=5))

#4print(random.choices(a,cum_weights=[1,1,1,1,1],k=5))

對於 #1–#4 的每一條語句不妨各自寫乙個迴圈語句讓它輸出個十遍八遍的,你就足以看出用法了。

這裡我只提出執行結果和結論:

#1 : 重複輸出10次列表a中的各個成員出現概率基本持平。

#2 : 重複輸出10次每次輸出均得到[3,3,3,3,3]結果。

#3 : 重複輸出10次列表a中的各個成員出現概率基本持平。

#4 : 重複輸出10次每次輸出均得到[1,1,1,1,1]結果。

結論:

引數weights設定相對權重,它的值是乙個列表,設定之後,每乙個成員

被抽取到的概率就被確定了。

比如weights=[1,2,3,4,5],那麼第乙個成員的概率

就是p=1/(1+2+3+4+5)=1/15。

cum_weights設定累加權重,python會自動把相對權重轉換為

累加權重,即如果你直接給出累加權重,那麼就不需要

給出相對權重,且python省略了一步執行。

比如weights=[1,2,3,4],那麼cum_weights=[1,3,6,10]

這也就不難理解為什麼cum_weights=[1,1,1,1,1]輸出全是第乙個成員1了。

7.random.sample(population,k)

從集**opulation中選取k個元素,返回乙個列表,集群

可以是list、tuple、str、set。

與random.choices()的區別:乙個是選取k次,乙個是選取k個,

選取k次的相當於選取後又放回,選取k個則選取後不放回。

故random.sample()的k值不能超出集群的元素個數。

import random

a = ['ahh','hhh','zzz','emm']

print(random.sample(a,3))

#['hhh', 'zzz', 'ahh']

8.random.shuffle(lst)

隨機打亂序列lst的順序並重新排序,注意它無返回值,另外lst只能是乙個可變序列,且只支援有下標的序列,因此它也不適用於set,你最好只把它用在列表上。
9.random.seed(a=none,version=2)

設定隨機種子的,如果不設定隨機種子,則預設以系統時間作為隨機種子。一般用不上。
參考:

Python Random模組使用

參考python 2.7.13編寫,英文好的同學可以直接閱讀官方解釋。random模組實現了多種分布的偽隨機數分布器。random模組可以從範圍 range 內隨機選取乙個整數 從序列 sequence 中,選取乙個隨機的元素 對乙個列表 list 進行偽隨機排列,或偽隨機取樣。random模組也可...

python random隨機模組

author 12711 coding utf 8 import random x random.random 生成乙個 0 1 的隨機浮點數 x random.uniform 0,10 生成乙個指定範圍的隨機浮點數範圍為 0 10 x random.randrange 0,10,2 從指定範圍內,...

python random模組學習筆記

python中的random模組用於生成隨機數,下面是random的一些使用方式 匯入random模組 import random一 choice choice 隨機獲取乙個值 從0 9中隨機輸出乙個值 defchoice value1 random.choice range 10 value2 r...