【python測試開發棧】幫你總結python random模組高頻使
隨機資料在平時寫python指令碼時會經常被用到,比如隨機生成0和1來控制邏輯、或者從列表中隨機選擇一個元素(其實抽獎程式也類似,就是從公司所有人中隨機選擇中獎使用者)等等。這篇文章,就幫大家整理在python中random模組使用頻率比較高的方法。
常用方法
為了方便大家理解和記憶,將方法進行了歸類:
整數用函式
- random.randrange(stop)
- 隨機返回[0, stop-1]之間的整數
- random.randrange(start, stop, step)
- 隨機返回[start, stop-1]之間的整數。
- step是遞增計數,列一個公式你就明白了:(隨機生成的值—start)%step=0
- random.randint(start, stop)
- 隨機返回[start, stop]之間的整數
- random.getrandbits(bits)
- 用於隨機對應bits位的整數
- 隨機返回[0, 2的bits位-1]之間的整數。
最後需要注意一點:上面的幾個方法也是可以隨機返回負數的,只需要引數傳承負數就可以了。下面舉個例子:
# 0-2之間的整數
print(random.randrange(3))
# 1-299之間的整數,增長基數是5
print(random.randrange(1, 300, 5))
# 1-20之間的整數
print(random.randint(1, 20))
# -3到0之間的負數
print(random.randint(-3, 0))
# -3到-1之間的負數
print(random.randrange(-3, 0))
# 返回1~2-1之間的數字
print(random.randrange(1))
# 返回1~2的32次方-1之間的數字
print(random.getrandbits(32))
## 返回值
0
1
17
0
-1
0
3150567570
浮點型函式
- random.random()
- 隨機返回[0,1)之間的浮點型數字
- random.uniform(a, b)
- 隨機返回[a,b)之間的浮點數字
其實上面的兩個方法也是符合數學隨機分佈模式的,為了方便大家理解,我這裡單獨列出來(區別於下面的 數學分佈模式),方便大家在隨機生成浮點型數字時,能少些猶豫。
# 1. 生成一個0-1之間隨機浮點數
print(random.random())
# 2. 生成一個a-b之間的隨機浮點數
print(random.uniform(10, 500))
print(random.uniform(40, 10))
# 返回值
0.7833926665736892
150.2805875943869
39.88236257691508
序列函式
顧名思義,序列函式隨機的物件是列表。
- random.choice(list)
- 從list隨機返回一個元素。
- random.choices(list, weights,k)
- 相當於random.choice()的升級版本。
- weights是權重,針對list的每個元素都設定權重,來改變隨機的機率。
- k是返回幾個元素。需要注意這個方法返回的是列表。
- random.sample( population, k )
- 3.6新增功能,用於從population列表中,返回隨機無重複的抽樣。
- 前面提過抽獎,其實如果你想做一個抽獎系統,可以用這個方法改造。
- random.shuffle(list)
- 將list列表中的元素隨機打亂。
對應的例子如下:
# 從給定的序列中隨機選擇一個元素
print(random.choice([1, 2, 3, 4, 5]))
# random.choice的升級版本,還可以指定某個元素對應的權重
print(random.choices([1, 2, 3, 4, 5], [10, 15, 45, 50, 60]))
# 打亂某個序列,從python3.6新增的方法
list_test = [2, 3, 4, 5, 6]
random.shuffle(list_test)
print(list_test)
# 取樣,從某個列表中,隨機選擇若干個元素
print(random.sample([1, 2, 3, 4, 5, 6, 7], k=3))
# 返回值
3
[5]
[6, 3, 4, 2, 5]
[6, 1, 7]
控制random的行為
- random.seed( a=None, version=2 )
- 設定random的種子值,怎麼理解種子值呢?大家就想一句話就好了:“種瓜得瓜種豆得豆”,所以一樣的種子值,那麼種出來的結果是一樣的。
- 假如現在隨機兩次,在呼叫random隨機生成資料前,將random.seed設定成一樣的值,則隨機生成的值是一樣的。
- random.getstate()
- 這個很簡單,就是返回random生成器當前的狀態的。
- random.setstate(state)
- 這個用於設定random的狀態
- setstate和getstate方法結合起來使用,可以用於恢復random的狀態。
對應的例子如下:
# 驗證seed
random.seed(1)
print(random.randrange(1000))
random.seed(1)
print(random.randrange(1000))
# 驗證random的狀態
state = random.getstate()
print(random.randrange(1000))
print(random.randrange(1000))
random.setstate(state)
print(random.randrange(1000))
# 返回結果
137
137
582
867
582
數學分佈模式
下面列的這些方法都是跟數學分佈的概念有關係,說實話大學裡學的相關的東西,都還給老師了,我查了資料想去理解不同的數學分佈的知識,但是理解起來有些吃力,不過其實對我們使用的人來說,只需要理解其能根據一定規則,隨機返回浮點數就可以了。
- random.triangular(low, high, mode) 以三角分佈的機率分佈返回隨機數
- random.betavariate(alpha, beta) 以beta分佈的機率分佈返回0到1之間的隨機數
- random.expovariate() 以指數分佈返回隨機數
- random.gammavariate(alpha, beta) 以gamma分佈的機率分佈返回隨機數
- random.gauss(mu, sigma) 以高斯分佈的機率分佈返回隨機數
- random.lognormvariate(mu, sigma) 以對數正態分佈的機率分佈返回隨機數
- random.normalvariate(mu, sigma) 和高斯分佈類似
- random.vonmisesvariate(mu, kappa) 以von Mises分佈的機率分佈返回隨機數
- random.paretovariate(alpha) 以Pareto( 帕累託)分佈的機率分佈返回隨機數
- random.weibullvariate(alpha, beta) 以Weibull(威爾布)分佈的機率分佈返回隨機數
其實大家也不需要完全記住上面的方法,碰到具體的使用場景,知道有對應的方法,能檢視文件找到就可以了。
總結
上面幫大家整理了random模組高頻使用的方法,相對還是比較簡單的,大家有任何的問題,歡迎留言。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4830/viewspace-2824663/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【python測試開發棧】—幫你總結Python os模組高頻使用的方Python
- python random模組Pythonrandom
- python 使用 random模組生成隨機測試資料Pythonrandom隨機
- python_random模組Pythonrandom
- python–模組之random隨機數模組Pythonrandom隨機
- Python 隨機(random)模組的不可預測之美Python隨機random
- Python生成隨機數random模組Python隨機random
- python logging模組使用總結Python
- Python常用模組(random隨機模組&json序列化模組)Pythonrandom隨機JSON
- MicroPython的random模組(pyb上測試)Pythonrandom
- 測試開發全棧之 Python 自動化全棧Python
- Python全棧開發武沛齊day07模組Python全棧
- Python全棧開發武沛齊day06模組Python全棧
- 20個Python random模組的程式碼示例Pythonrandom
- python後端開發面試總結Python後端面試
- Python時間模組常用操作總結Python
- Python高頻面試題解析公開課Python面試題
- 用Python的random模組繪製折線圖Pythonrandom
- Python檢視模組幫助/文件Python
- Python模組高階技巧Python
- 【模組三】Python高階Python
- 上傳模組開發總結
- 評論模組開發總結
- 7.27考試總結(NOIP模擬25)[random·string·queue]random
- Python重試模組retryingPython
- Python語言高頻重點彙總Python
- Python 自動化測試 必會模組 UnittestPython
- Python學習【第十三篇】隨機數相關:random模組&string模組Python隨機random
- Python種匯入模組的三種方式總結Python
- python你用過哪些模組Python
- python自動化測試(一)--uiautomator總結PythonUI
- 存下吧!Spring高頻面試題總結Spring面試題
- python開發學習之如何更好的引用Python模組?Python
- Python開發常用的庫及模組!Python學習教程Python
- 《Python 測試開發技術棧—巴哥職場進化記》—前言Python
- 《Python測試開發技術棧—巴哥職場進化記》—前言Python
- 編寫你自己的Python模組Python
- Python 面試總結(一)Python面試