該模塊實現了各種分布的偽隨機數生成器。可以在區間內抽取一個隨機數,可以在列表中抽取一個元素,可以從分布中抽取樣本 。
random模塊不能直接訪問,需要導入 random 模塊,然后通過 random 靜態對象調用該方法。
import random
1 生成隨機數
隨機生成器種子,在同一個種子下,生成同樣的隨機數
random.seed()
返回 [0, 1.0) 范圍內的下一個隨機浮點數。
random.random()
random.int(a,b) 生成整數,a <= N <= b。
random.randint(1,4) #
2
2 序列中隨機選取一個
在序列range() 中隨機選取一個整數random.randrange( start, stop , step )
random.randrange(1,5,2)
3
random.choice(population), 從非空序列 population 返回一個隨機元素。 如果 seq 為空,則引發 IndexError.
random.choice([2,5,8])
8
random.choices(population, weights=None, *, cum_weights=None, k) . 從整體中按照權重抽取K個,權重序列長度必須等于population長度。 顯然,不給定權重且k=1. 等價于
random.choice(population).
random.choices(['red', 'black', 'green'], [4, 10, 2], k=6)
['green', 'black', 'red', 'black', 'green', 'black']
random.sample(population, k, *, counts=None),返回從總體序列或集合中選擇的唯一元素的 k 長度列表,即無重復(無放回)的隨機抽樣。
random.sample(['red', 'black', 'green'], 2)
['red', 'green']
3.9版本之后,增加counts 形參,可以指定個數, random.sample([‘red’, ‘red’,‘red’,‘black’, ‘green’], 2)等價于random.sample([‘red’,‘black’, ‘green’],counts=[3,1,1], 2)
3從分布中抽取樣本
常用的分布如下表:
函數分布gauss(mu,sigma)/normalvarite(mu,sigma)正態分布
uniform(a,b)均勻分布
expovariate(lamda)指數分布
gammavariate(alpha,beta)Gamma 分布
lognormvariate(mu,sigma)對數正態分布
betavariate(alpha,beta)Beta 分布
weibullvariate(alpha,beta)Weibull 分布
paretovariate(alpha)Pareto 分布
vonmisesvariate(mu,kappa)von Mises 分布(
random.gauss(1,2)
-0.34372692554557815
random.uniform(1,2)
1.7719936383153665
random.expovariate(1)
0.079384517694696
random.gammavariate(1,3)
3.8134444290373866
random.lognormvariate(1,2)
2.561312589509173
random.betavariate(1,2)
0.03565784800319274
random.weibullvariate(1,2)
1.211306128111137
random.paretovariate(1)
1.709941711311189
random.vonmisesvariate(1,2)
2.377632588889548
data = [random.gammavariate(2,4) for i in range(10000)] # 抽取10000個gamma分布樣本
#直方圖
import matplotlib.pyplot as plt
plt.hist(data, bins=100, color="#FF0000", alpha=.7)
4 打亂順序
random.shuffle(x [, random])將序列 x 隨機打亂位置。
a=[1,3,5,7,9]
random.shuffle(a);print(a)
[3, 7, 5, 1, 9] # 原地打亂順序
原文鏈接:https://blog.csdn.net/weixin_43705953/article/details/109025791