前言
每次用到隨機(jī)數(shù)函數(shù)的時候總是記不清哪個函數(shù)產(chǎn)生什么類型的隨機(jī)數(shù),都要現(xiàn)查。因此寫了這篇總結(jié)文章,以供需要時查閱和復(fù)習(xí)。
首先,用于生成隨機(jī)數(shù)的模塊有兩個:
- python內(nèi)置的random模塊
- numpy.random模塊
接下來分別介紹這兩個模塊中的一些常用函數(shù):
一、python內(nèi)置的random模塊
random.random():產(chǎn)生一個0到1范圍內(nèi)的隨機(jī)浮點(diǎn)數(shù)
random.uniform(a, b):產(chǎn)生一個隨機(jī)浮點(diǎn)數(shù)n,a<= n <= b或者b<=n<=a。(此處a和b的相對大小關(guān)系沒有限制)
random.randint(a, b):產(chǎn)生一個隨機(jī)整數(shù)n,a<=n<=b。(此處a必須小于b,否則報錯)
random.choice(sequence):從序列中隨機(jī)獲取一個元素。sequence指元素的集合,可為元組、列表或者字符串。
random.randrange([start,] stop[, step]):在 指定范圍內(nèi),按照指定基數(shù)遞增的集合中 隨機(jī)獲取一個元素
random.sample(sequence, k):從序列中隨機(jī)選取k個元素組成一個新列表。
random.shuffle(list):將列表中的元素隨機(jī)排序。注意此函數(shù)沒有返回值,直接改變list。
舉例:
import random # 首先導(dǎo)入random包
# 隨機(jī)浮點(diǎn)數(shù)
print(random.random())
print(random.uniform(10, 20)) # a < b時
print(random.uniform(40, 30)) # a > b時
# 隨機(jī)整數(shù)
print(random.randint(1, 5))
# 隨機(jī)元素
print(random.choice('abcdef'))
print(random.choice( [1, 3, 5, 'ha'] ))
print(random.choice( (2, 4, 6, 'hey') ))
# 選取某范圍內(nèi)的隨機(jī)元素
print(random.randrange(2, 10, 2)) # 在[2, 4, 6, 8]中隨機(jī)選取一個元素,不包括10
print(random.randrange(5)) # 在[1, 2, 3, 4]中隨機(jī)選取一個元素
# 隨機(jī)選取
li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(random.sample(li, 5))
tu = (11, 12, 13, 14, 15)
print(random.sample(tu, 2))
s = 'helloworld'
print(random.sample(s, 3))
random.shuffle(li) # 隨機(jī)打亂li中元素的順序
print(li)
二、numpy.random模塊
1、np.random.rand([d0, d1, ..., dn]):返回[0.0, 1.0]之間的隨機(jī)浮點(diǎn)數(shù)或數(shù)組,d0, d1, ...為數(shù)組的維度
# [0.0, 1.0]之間的隨機(jī)浮點(diǎn)數(shù)
print(np.random.rand())
# [0.0, 1.0]之間的隨機(jī)浮點(diǎn)數(shù)組
print(np.random.rand(2, 3)) # 2行3列
print(np.random.rand(2, 2, 3)) # 三維數(shù)組,維度為(2, 2, 3)
運(yùn)行結(jié)果如下:
2、np.random.randn([d0, d1, ..., dn]) :返回標(biāo)準(zhǔn)正態(tài)分布樣本值
# 正態(tài)分布隨機(jī)樣本值
print(np.random.randn())
# 正態(tài)分布隨機(jī)樣本數(shù)組
print(np.random.randn(2, 3)) # 2行3列
print(np.random.randn(2, 2, 3)) # 三維數(shù)組,維度為(2, 2, 3)
運(yùn)行結(jié)果如下:
3、np.random.randint([low,] high[, size]) :返回隨機(jī)整數(shù),位于半開區(qū)間 [low, high)
# 隨機(jī)整數(shù)
print(np.random.randint(10)) # 返回一個小于10的隨機(jī)整數(shù)
# 隨機(jī)整數(shù)數(shù)組
print(np.random.randint(5, size=3))
print(np.random.randint(4, size=(2, 3)))
print(np.random.randint(1, 4, size=(3, 3)))
運(yùn)行結(jié)果如下:
參考:
【轉(zhuǎn)】Python 玩轉(zhuǎn)隨機(jī)數(shù)
隨機(jī)抽樣 (numpy.random)