python標(biāo)準(zhǔn)庫random模塊處理隨機數(shù)
前言
random模塊實現(xiàn)了各種分布的偽隨機數(shù)生成器。
偽隨機數(shù):人類使用算法等方式,以一個基準(zhǔn)(也被稱為種子,常用的是時間戳)來構(gòu)造一系列數(shù)字,這些數(shù)字的特性符合人們所理解的隨機數(shù)。
一旦算法和種子都確定,產(chǎn)生的隨機數(shù)序列也是確定的,所以稱為偽隨機數(shù)。
1. 常用函數(shù)
| 常用函數(shù) | 說明 |
|---|---|
random.seed(a) | 設(shè)置初始化隨機種子,可輸出相同隨機數(shù)序列;a取整數(shù)或浮點數(shù),不設(shè)置時默認(rèn)以系統(tǒng)時間為種子 |
random.random() | 生成一個0.0到1.0之間的隨機浮點數(shù) |
random.uniform(a,b) | 生成一個[a,b]之間的隨機小數(shù),a,b取整數(shù)或浮點數(shù) |
random.randint(a,b) | 生成一個[a,b]之間的隨機整數(shù) |
random.randrange(start,stop[,step]) | 生成一個[start,stop)之間以step為步數(shù)的隨機整數(shù);start,stop,step都是整數(shù),step不設(shè)置默認(rèn)為1 |
random.getrandbits(k)(seq) | 生成一個占內(nèi)存k位以內(nèi)的隨機整數(shù);k取長度的整數(shù)值 如果設(shè)置k=2,那么可取的數(shù)就在 (0,1,2,3) 之間隨機取 |
random.choice(seq) | 從序列類型seq中隨機返回一個元素;seq是序列類型,如:字符串、列表、元組、集合等 |
random.shuffle(seq) | 將序列類型中元素隨機排序,返回打亂后的序列,seq被改變(改變原列表);seq是序列類型,如:字符串、列表、元組等 |
random.sample(pop,k) | 從pop中選取k個元素,以列表類型返回(不改變原列表);pop是序列類型,k是整數(shù)表示取k個數(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)的對象,可以把它傳遞給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 生成隨機密碼
生成的密碼包含數(shù)字和字母,可以指定密碼的位數(shù)。
# -*- coding: utf-8 -*-
"""
@File : 隨機生成密碼.py
@E-Mail : zoya.zh@qq.com
"""
import random
import string
def get_random_passwd(length:int):
'''
生成隨機密碼h
:param length: 密碼的長度
:return: 生成的隨機密碼
'''
num_count = random.randint(1,length-1) # 密碼中數(shù)字的個數(shù)
char_count = length - num_count # 密碼中字母的個數(shù)
num_list = [random.choice(string.digits) for i in range(num_count)] # 隨機生成的數(shù)字
char_list = [random.choice(string.ascii_letters) for i in range(char_count)] # 隨機生成的字母
psw = num_list + char_list
# 隨機排列序列中的字符
random.shuffle(psw)
# 把得到的密碼轉(zhuǎn)成字符串的格式返回
result = ''.join(psw)
return result
if __name__ == '__main__':
psw = get_random_passwd(8)
print(psw)測試時每次都會生成不同的密碼
8oG4GW76
261Ro923
到此這篇關(guān)于python標(biāo)準(zhǔn)庫random模塊處理隨機數(shù)的文章就介紹到這了,更多相關(guān)python random模塊 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pycocotools介紹以及在windows10下的安裝過程
這篇文章主要介紹了pycocotools介紹以及在windows10下的安裝過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02
python數(shù)組轉(zhuǎn)換為矩陣的方法實現(xiàn)
本文主要介紹了python數(shù)組轉(zhuǎn)換為矩陣的方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
Python 數(shù)據(jù)分析之Beautiful Soup 提取頁面信息
Beautiful Soup 提供一些簡單的、python 式的函數(shù)用來處理導(dǎo)航、搜索、修改分析樹等功能。它是一個工具箱,通過解析文檔為用戶提供需要抓取的數(shù)據(jù),因為簡單,所以不需要多少代碼就可以寫出一個完整的應(yīng)用程序2021-10-10
Python繪圖系統(tǒng)之自定義一個坐標(biāo)列表控件
這篇文章主要為大家詳細(xì)介紹了Python如何編寫一個繪圖系統(tǒng),可以實現(xiàn)自定義一個坐標(biāo)列表控件,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2023-08-08

