網站首頁 編程語言 正文
random模塊
該模塊實現了各種分布的偽隨機數生成器。(包括在實數軸上計算均勻、正態(高斯)、對數正態、負指數、伽馬和貝塔分布的函數)不應將此模塊的偽隨機生成器用于安全目的。有關安全性或加密用途,請使用secrets模塊。
關于random模塊的更多詳細內容,請參考官方文檔random — 生成偽隨機數
下面列舉一下該模塊常用的功能。
random.seed
random.seed(a=None, version=2)
初始化隨機數生成器,如果a被省略或為None,則使用當前系統時間。如果操作系統提供隨機源,則使用它們而不是系統時間。當你的seed是相同的情況下,你多次執行得到的隨機數序列是相同的。因為Mersenne Twister的完全確定性,因此random模塊產生的隨機數不適合加密目的。
常用整數隨機函數
random.randrange(stop) random.randrange(start, stop[, step])
randrange()返回一個[start, stop)區間內隨機選擇的元素。
random.randint(a, b)
返回隨機整數 N 滿足 a <= N <= b。相當于 randrange(a, b+1)。
常用序列隨機函數
random.choice(seq)
從非空序列 seq 返回一個隨機元素。 如果 seq 為空,則引發 IndexError。
random.shuffle(x[, random])
將序列 x 隨機打亂位置。(在原來的序列上進行,不會生成新的序列。)
可選參數 random 是一個函數,在 [0.0, 1.0) 中返回隨機浮點數;默認情況下是函數 random.random() 。
random.sample(population, k, *, counts=None)
返回從總體序列或集合中選擇的唯一元素的 k 長度列表。 用于無重復的隨機抽樣。(抽獎常用的函數)下面是一個抽獎的例子。
有30000人參加了Python編程活動,然后抽取1000人進行獎勵。其中一等獎20人,二等獎30人,三等獎50人,四等獎200人,五等獎700人。
上述的抽獎活動,可以用如下的代碼完成。
res = random.sample(range(1, 30001), 1000) print("一等獎名單:", res[:20]) print("二等獎名單:", res[20:50]) print("三等獎名單:", res[50:100]) print("四等獎名單:", res[100:300]) print("五等獎名單:", res[300:])
而且,這樣產生的抽獎結果也將是可控的。例如,我們需要3號中一等獎,33號中二等獎,333號中三等獎。代碼如下:
all_list = [x for x in range(1, 30001) if x not in[3, 33, 333]] res = random.sample(all_list, 997) # 暗箱操作 res.insert(random.randint(0, 10), 3) # 將3號摻入前10 res.insert(random.randint(30, 40), 33) # 將33號摻入30-40之間 res.insert(random.randint(70, 90), 333) # 將333摻入到70-90之間 print("一等獎名單:", res[:20]) print("二等獎名單:", res[20:50]) print("三等獎名單:", res[50:100]) print("四等獎名單:", res[100:300]) print("五等獎名單:", res[300:])
常用實數隨機函數
random.random()
返回 [0.0, 1.0) 范圍內的下一個隨機浮點數。
random.uniform(a, b)
返回一個隨機浮點數 N ,當 a <= b 時 a <= N <= b ,當 b < a 時 b <= N <= a 。終點 b 是否在該范圍內。取決于等式 a + (b-a) * random() 中的浮點舍入結果。
random.gauss(mu, sigma)
正態分布,也稱高斯分布。 mu 為平均值,而 sigma 為標準差。 此函數要稍快于下面所定義的 normalvariate() 函數。
多線程注意事項:
當兩個線程同時調用此方法時,它們有可能將獲得相同的返回值。 這可以通過三種辦法來避免。
1) 讓每個線程使用不同的隨機數生成器實例。
2) 在所有調用外面加鎖。
3) 改用速度較慢但是線程安全的 normalvariate() 函數。
random.normalvariate(mu, sigma)
正態分布。 mu 是平均值,sigma 是標準差。
總結
原文鏈接:https://blog.csdn.net/zy010101/article/details/123359257
相關推薦
- 2022-08-20 python程序的打包分發示例詳解_python
- 2022-11-01 詳解C++中函數模板的定義與使用_C 語言
- 2022-10-19 python類參數定義及數據擴展方式unsqueeze/expand_python
- 2022-04-06 教你用Python尋找重復文件并刪除的腳本寫法_python
- 2023-09-18 ECharts 觸發click點擊事件的兩種方式
- 2022-06-14 C#委托與冒泡排序實例_C#教程
- 2023-03-27 react使用.env文件管理全局變量的方法_React
- 2022-08-19 redis在windows下啟動# Creating Server TCP listening so
- 最近更新
-
- 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同步修改后的遠程分支