網站首頁 編程語言 正文
python的random庫,提供了很多隨機抽樣方法。
1. 設置隨機數種子 seed()
在適當的情形下,為例保證抽樣的結果固定,不因多次運行而改變,可以設置隨機數種子。
如果不設置則是以當前系統時間作為隨機數種子。
設置隨機數種子使用的是random.seed()方法。代碼示例如下。
import random
random.seed(100)
在jupyternotebook中,seed的影響范圍只限于每個代碼格子內。
2. random() 與 randint()
random庫的random()函數,作為該模塊中其他隨機方法的基礎。
可以在區間 [0.0, 1.0) 內隨機生成一個浮點數。
如果想要產生其他范圍內的浮點數,則可以使用random.uniform(a,b)方法,
以產生[a,b]范圍內一個隨機浮點數。
具體示例如下:
random.random()
random庫的randint()方法則可以在給定區間內隨機生一個整數。(左右邊界值都可以取)
random.randint(1,2)
輸出效果如下圖所示:
此外,如果使用random.randrange(a,b,step)方法,則還可以在原有基礎上,限制range的步長,再取整數。
3. sample()方法 無放回抽樣
sample()方法可以從給定序列中隨機抽取n個元素(無放回抽樣。)
該方法語法如下:
random.sample(population,k)
random.seed(13)
listA = ["a", "b", "c"]
random.sample(listA,2)
4. choice() 與 choices() 有放回抽樣
choice() 與 choices()可以實現從給定的序列中進行有放回地隨機抽樣。
其中chioce()只抽一次,而choices() 表示抽取多次。
random.choices()方法的語法如下:
random.choices(population,weights=None,*,cum_weights=None,k=1)
import random
listA = ["a", "b", "c"]
print(random.choice(listA))
print(random.choices(listA, k=2))
5. shuffle()方法
shuffle()方法可以實現,對序列的隨機排序,即打亂原有序列。
random.seed(13)
listA = ["a", "b", "c"]
random.shuffle(listA)
listA
6. 猜拳小案例
看似簡單樸實的案例,往往蘊含著許多值得參考和借鑒的細節。
以猜拳小游戲案例為例,要求是玩家對電腦,電腦隨機出,玩家以輸入的方式。
import random
while 1:
s = int(random.randint(1, 3))
if s == 1:
ind = "石頭"
elif s == 2:
ind = "剪子"
elif s == 3:
ind = "布"
m = input('【猜拳游戲】輸入 石頭、剪子、布猜拳,輸入"end"結束游戲:\n')
blist = ["石頭", "剪子", "布"]
if (m not in blist) and (m != 'end'):
print ("輸入錯誤,請重新輸入!")
elif (m not in blist) and (m == 'end'):
print ("\n游戲退出中...")
print("已退出")
break
elif m == ind :
print ("電腦出了: " + ind + ",平局!")
elif (m == '石頭' and ind =='剪子') or (m == '剪子' and ind =='布') or (m == '布' and ind =='石頭'):
print ("電腦出了: " + ind +",你贏了!")
elif (m == '石頭' and ind =='布') or (m == '剪子' and ind =='石頭') or (m == '布' and ind =='剪子'):
print ("電腦出了: " + ind +",你輸了!")
原文鏈接:https://blog.csdn.net/weixin_48964486/article/details/127122989
相關推薦
- 2022-04-03 C++從匯編的視角審視對象的創建問題_C 語言
- 2023-02-01 Python中列表遍歷使用range和enumerate的區別講解_python
- 2022-05-21 云原生技術kubernetes之volumes容器的使用_云其它
- 2023-10-10 Promise同時獲取n個接口數據的幾種方式
- 2023-03-16 C語言進階之字符串查找庫函數詳解_C 語言
- 2021-12-10 linux系統文件共享samba配置教程_Linux
- 2022-11-08 background-image 背景平鋪方式、 CSS3 background-size背景圖像大
- 2022-06-04 如何通過一篇文章了解Python中的生成器_python
- 最近更新
-
- 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同步修改后的遠程分支