網站首頁 編程語言 正文
前言
random模塊實現了各種分布的偽隨機數生成器。
偽隨機數:人類使用算法等方式,以一個基準(也被稱為種子,常用的是時間戳)來構造一系列數字,這些數字的特性符合人們所理解的隨機數。
一旦算法和種子都確定,產生的隨機數序列也是確定的,所以稱為偽隨機數。
1. 常用函數
常用函數 | 說明 |
---|---|
random.seed(a) |
設置初始化隨機種子,可輸出相同隨機數序列;a取整數或浮點數,不設置時默認以系統時間為種子 |
random.random() |
生成一個0.0到1.0之間的隨機浮點數 |
random.uniform(a,b) |
生成一個[a,b]之間的隨機小數,a,b取整數或浮點數 |
random.randint(a,b) |
生成一個[a,b]之間的隨機整數 |
random.randrange(start,stop[,step]) |
生成一個[start,stop)之間以step為步數的隨機整數;start,stop,step都是整數,step不設置默認為1 |
random.getrandbits(k)(seq) |
生成一個占內存k位以內的隨機整數;k取長度的整數值 如果設置k=2,那么可取的數就在 (0,1,2,3) 之間隨機取 |
random.choice(seq) |
從序列類型seq中隨機返回一個元素;seq是序列類型,如:字符串、列表、元組、集合等 |
random.shuffle(seq) |
將序列類型中元素隨機排序,返回打亂后的序列,seq被改變(改變原列表);seq是序列類型,如:字符串、列表、元組等 |
random.sample(pop,k) |
從pop中選取k個元素,以列表類型返回(不改變原列表);pop是序列類型,k是整數表示取k個數 |
常用函數使用方法:
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))
顯示結果:
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. 不常用函數
random模塊中不常用的函數有如下:
函數名 | 說明 |
---|---|
random.getstate() |
捕獲并返回生成器當前內部狀態的對象,可以把它傳遞給setstate()函數來把生成器內部狀態恢復到調用getstate()函數之前的狀態,相當于備份 |
random.setstate(state) |
state應該是getstate()函數的結果,用來把生成器當前的內部狀態恢復為state |
random.betavariate(alpha,beta) |
Beta分布:參數的條件是alpha>0和beta > 0,返回值的范圍介于0和1之間 |
random.expovariate(lambd) |
指數分布 |
random.gammavariate(alpha,beta) |
Gamma分布:參數的條件的alpha > 0 & beta < 0 |
random.gauss(mu,sigma) |
高斯分布: mu是平均值,sigma是標準差 |
random.normalvariate(mu,sigma) |
正態分布:mu是平均值,sigma是標準差 |
random.paretovariate(alpha) |
帕累托分布:alpha是形狀參數 |
random.weibullvariate(alpha,beta) |
威布爾分布:alpha是比例參數,beta是形狀參數 |
3. 使用示例
3.1 生成隨機密碼
生成的密碼包含數字和字母,可以指定密碼的位數。
# -*- 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) # 密碼中數字的個數 char_count = length - num_count # 密碼中字母的個數 num_list = [random.choice(string.digits) for i in range(num_count)] # 隨機生成的數字 char_list = [random.choice(string.ascii_letters) for i in range(char_count)] # 隨機生成的字母 psw = num_list + char_list # 隨機排列序列中的字符 random.shuffle(psw) # 把得到的密碼轉成字符串的格式返回 result = ''.join(psw) return result if __name__ == '__main__': psw = get_random_passwd(8) print(psw)
測試時每次都會生成不同的密碼
8oG4GW76
261Ro923
原文鏈接:https://blog.csdn.net/sinat_41752325/article/details/126999626
相關推薦
- 2022-09-08 python?字典生成樹狀圖的實例_python
- 2022-04-24 C語言時間函數之strftime()詳解_C 語言
- 2022-04-14 Python實現用戶登錄注冊_python
- 2022-05-26 Pytorch中使用ImageFolder讀取數據集時忽略特定文件_python
- 2021-12-14 Qt?QMessageBox類使用教程_C 語言
- 2023-11-16 python 插值 —— 如何實現插值,以及錯誤ValueError: A value in x_n
- 2023-03-29 Python之二維正態分布采樣置信橢圓繪制_python
- 2023-07-31 解決el-tree數據回顯時子節點部分選中,父節點都全選中的坑
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支