python標(biāo)準(zhǔn)庫random模塊處理隨機(jī)數(shù)
前言
random模塊實(shí)現(xiàn)了各種分布的偽隨機(jī)數(shù)生成器。
偽隨機(jī)數(shù):人類使用算法等方式,以一個(gè)基準(zhǔn)(也被稱為種子,常用的是時(shí)間戳)來構(gòu)造一系列數(shù)字,這些數(shù)字的特性符合人們所理解的隨機(jī)數(shù)。
一旦算法和種子都確定,產(chǎn)生的隨機(jī)數(shù)序列也是確定的,所以稱為偽隨機(jī)數(shù)。
1. 常用函數(shù)
| 常用函數(shù) | 說明 |
|---|---|
random.seed(a) | 設(shè)置初始化隨機(jī)種子,可輸出相同隨機(jī)數(shù)序列;a取整數(shù)或浮點(diǎn)數(shù),不設(shè)置時(shí)默認(rèn)以系統(tǒng)時(shí)間為種子 |
random.random() | 生成一個(gè)0.0到1.0之間的隨機(jī)浮點(diǎn)數(shù) |
random.uniform(a,b) | 生成一個(gè)[a,b]之間的隨機(jī)小數(shù),a,b取整數(shù)或浮點(diǎn)數(shù) |
random.randint(a,b) | 生成一個(gè)[a,b]之間的隨機(jī)整數(shù) |
random.randrange(start,stop[,step]) | 生成一個(gè)[start,stop)之間以step為步數(shù)的隨機(jī)整數(shù);start,stop,step都是整數(shù),step不設(shè)置默認(rèn)為1 |
random.getrandbits(k)(seq) | 生成一個(gè)占內(nèi)存k位以內(nèi)的隨機(jī)整數(shù);k取長(zhǎng)度的整數(shù)值 如果設(shè)置k=2,那么可取的數(shù)就在 (0,1,2,3) 之間隨機(jī)取 |
random.choice(seq) | 從序列類型seq中隨機(jī)返回一個(gè)元素;seq是序列類型,如:字符串、列表、元組、集合等 |
random.shuffle(seq) | 將序列類型中元素隨機(jī)排序,返回打亂后的序列,seq被改變(改變?cè)斜恚?;seq是序列類型,如:字符串、列表、元組等 |
random.sample(pop,k) | 從pop中選取k個(gè)元素,以列表類型返回(不改變?cè)斜恚?;pop是序列類型,k是整數(shù)表示取k個(gè)數(shù) |
常用函數(shù)使用方法:
import random
print('no seed')
for i in range(5):
ret = random.randint(1,10)
print(ret)
print()
print(random.random())
print(random.uniform(1,10))
print(random.randint(0,10))
print(random.randrange(1,10,5))
print(random.getrandbits(2))
print(random.choice([1,3,5,7,9]))
l=[1,2,3,4]
random.shuffle(l)
print(l)
print(random.sample(l,2))
print('*'*40)
print('has seed')
random.seed(1)
for i in range(5):
ret = random.randint(1,10)
print(ret)
print(random.random())
print(random.uniform(1,10))
print(random.randint(0,10))
print(random.randrange(1,10,5))
print(random.getrandbits(2))
print(random.choice([1,3,5,7,9]))
l=[1,2,3,4]
random.shuffle(l)
print(l)
print(random.sample(l,2))顯示結(jié)果:
no seed
4
7
5
5
1
()
0.730177834774
4.05987712407
8
6
0
7
[1, 4, 2, 3]
[4, 1]
****************************************
has seed
2
9
8
3
5
0.449491064789
6.8643367545
8
1
0
9
[1, 3, 4, 2]
[4, 1]
2. 不常用函數(shù)
random模塊中不常用的函數(shù)有如下:
| 函數(shù)名 | 說明 |
|---|---|
random.getstate() | 捕獲并返回生成器當(dāng)前內(nèi)部狀態(tài)的對(duì)象,可以把它傳遞給setstate()函數(shù)來把生成器內(nèi)部狀態(tài)恢復(fù)到調(diào)用getstate()函數(shù)之前的狀態(tài),相當(dāng)于備份 |
random.setstate(state) | state應(yīng)該是getstate()函數(shù)的結(jié)果,用來把生成器當(dāng)前的內(nèi)部狀態(tài)恢復(fù)為state |
random.betavariate(alpha,beta) | Beta分布:參數(shù)的條件是alpha>0和beta > 0,返回值的范圍介于0和1之間 |
random.expovariate(lambd) | 指數(shù)分布 |
random.gammavariate(alpha,beta) | Gamma分布:參數(shù)的條件的alpha > 0 & beta < 0 |
random.gauss(mu,sigma) | 高斯分布: mu是平均值,sigma是標(biāo)準(zhǔn)差 |
random.normalvariate(mu,sigma) | 正態(tài)分布:mu是平均值,sigma是標(biāo)準(zhǔn)差 |
random.paretovariate(alpha) | 帕累托分布:alpha是形狀參數(shù) |
random.weibullvariate(alpha,beta) | 威布爾分布:alpha是比例參數(shù),beta是形狀參數(shù) |
3. 使用示例
3.1 生成隨機(jī)密碼
生成的密碼包含數(shù)字和字母,可以指定密碼的位數(shù)。
# -*- coding: utf-8 -*-
"""
@File : 隨機(jī)生成密碼.py
@E-Mail : zoya.zh@qq.com
"""
import random
import string
def get_random_passwd(length:int):
'''
生成隨機(jī)密碼h
:param length: 密碼的長(zhǎng)度
:return: 生成的隨機(jī)密碼
'''
num_count = random.randint(1,length-1) # 密碼中數(shù)字的個(gè)數(shù)
char_count = length - num_count # 密碼中字母的個(gè)數(shù)
num_list = [random.choice(string.digits) for i in range(num_count)] # 隨機(jī)生成的數(shù)字
char_list = [random.choice(string.ascii_letters) for i in range(char_count)] # 隨機(jī)生成的字母
psw = num_list + char_list
# 隨機(jī)排列序列中的字符
random.shuffle(psw)
# 把得到的密碼轉(zhuǎn)成字符串的格式返回
result = ''.join(psw)
return result
if __name__ == '__main__':
psw = get_random_passwd(8)
print(psw)測(cè)試時(shí)每次都會(huì)生成不同的密碼
8oG4GW76
261Ro923
到此這篇關(guān)于python標(biāo)準(zhǔn)庫random模塊處理隨機(jī)數(shù)的文章就介紹到這了,更多相關(guān)python random模塊 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決pycharm工程啟動(dòng)卡住沒反應(yīng)的問題
今天小編就為大家分享一篇解決pycharm工程啟動(dòng)卡住沒反應(yīng)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01
pycocotools介紹以及在windows10下的安裝過程
這篇文章主要介紹了pycocotools介紹以及在windows10下的安裝過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
用Python制作檢測(cè)Linux運(yùn)行信息的工具的教程
這篇文章主要介紹了用Python制作檢測(cè)Linux運(yùn)行信息的工具的教程,主要是用CPython讀取運(yùn)行系統(tǒng)的硬件參數(shù)、網(wǎng)絡(luò)傳輸流量統(tǒng)計(jì)等,需要的朋友可以參考下2015-04-04
python數(shù)組轉(zhuǎn)換為矩陣的方法實(shí)現(xiàn)
本文主要介紹了python數(shù)組轉(zhuǎn)換為矩陣的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
python使用tornado實(shí)現(xiàn)簡(jiǎn)單爬蟲
這篇文章主要為大家詳細(xì)介紹了python使用tornado實(shí)現(xiàn)簡(jiǎn)單爬蟲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
Python 數(shù)據(jù)分析之Beautiful Soup 提取頁面信息
Beautiful Soup 提供一些簡(jiǎn)單的、python 式的函數(shù)用來處理導(dǎo)航、搜索、修改分析樹等功能。它是一個(gè)工具箱,通過解析文檔為用戶提供需要抓取的數(shù)據(jù),因?yàn)楹?jiǎn)單,所以不需要多少代碼就可以寫出一個(gè)完整的應(yīng)用程序2021-10-10
Python繪圖系統(tǒng)之自定義一個(gè)坐標(biāo)列表控件
這篇文章主要為大家詳細(xì)介紹了Python如何編寫一個(gè)繪圖系統(tǒng),可以實(shí)現(xiàn)自定義一個(gè)坐標(biāo)列表控件,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2023-08-08

