Python中random庫的應用

文章目錄

  • 一、`random` 庫常用函數
  • 二、條件語句 + 隨機數
    • 示例1:隨機決定程序分支
    • 示例2:模擬概率事件
  • 三、循環語句 + 隨機數
    • 示例1:循環直到滿足隨機條件
    • 示例2:隨機次數循環
  • 四、隨機操作數據結構
    • 示例1:隨機打亂列表順序
    • 示例2:隨機選擇元素處理
  • 五、綜合應用示例
    • 示例1:猜數字游戲(隨機生成目標)🐱 😺
    • 示例2:生成隨機驗證碼
  • 六、結合異常處理
    • 示例:隨機重試機制
  • 總結

在 Python 中,結合 random 庫可以實現更靈活的程序流程控制,例如通過 生成隨機數、隨機選擇或隨機打亂數據來影響條件判斷、循環邏輯等。以下是詳細分類和應用示例:


一、random 庫常用函數

以下是 random 庫的常用函數,用于生成隨機數據:

函數作用
random.random()生成 [0.0, 1.0) 之間的隨機浮點數
random.randint(a, b)生成 [a, b] 之間的隨機整數
random.choice(seq)從序列中隨機選擇一個元素
random.shuffle(seq)隨機打亂序列(原地修改)
random.uniform(a, b)生成 [a, b) 之間的隨機浮點數
random.sample(population, k)從序列中隨機選擇 k 個不重復元素

二、條件語句 + 隨機數

通過隨機數控制條件分支的邏輯。

示例1:隨機決定程序分支

import randomnum = random.randint(1, 3)
if num == 1:print("執行方案A")
elif num == 2:print("執行方案B")
else:print("執行方案C")

示例2:模擬概率事件

import random# 模擬60%概率成功的事件
if random.random() < 0.6:print("成功!")
else:print("失敗!")

三、循環語句 + 隨機數

利用隨機數控制循環的終止條件或循環內的行為。

示例1:循環直到滿足隨機條件

import randomcount = 0
while True:num = random.randint(1, 10)print(f"隨機數: {num}")count += 1if num == 5:break
print(f"循環了 {count} 次才找到5")

可能輸出:

隨機數: 3
隨機數: 1
隨機數: 5
循環了 3 次才找到5

示例2:隨機次數循環

import randommax_attempts = random.randint(3, 6)  # 隨機生成3~6次嘗試
for i in range(max_attempts):print(f"第 {i+1} 次嘗試...")

可能輸出:

第 1 次嘗試...
第 2 次嘗試...
第 3 次嘗試...

四、隨機操作數據結構

結合 random 庫操作列表、字符串等數據結構。

示例1:隨機打亂列表順序

import randomitems = ["A", "B", "C", "D"]
random.shuffle(items)
print("打亂后的列表:", items)  # 如 ['C', 'A', 'D', 'B']

示例2:隨機選擇元素處理

import randomfruits = ["蘋果", "香蕉", "橘子", "西瓜"]
selected = random.choice(fruits)
print("今天吃:", selected)

五、綜合應用示例

示例1:猜數字游戲(隨機生成目標)🐱 😺

import randomtarget = random.randint(1, 100)
attempts = 0while True:guess = int(input("猜一個1~100之間的數字: "))attempts += 1if guess < target:print("猜小了!")elif guess > target:print("猜大了!")else:print(f"恭喜!你用了 {attempts} 次猜中!")break

示例2:生成隨機驗證碼

import random
import stringdef generate_code(length=6):chars = string.digits + string.ascii_letters  # 數字+字母code = ''.join(random.choice(chars) for _ in range(length))return codeprint("驗證碼:", generate_code())  # 如 '8hJ3qF'

生成隨機驗證碼-解析與優化


六、結合異常處理

處理隨機輸入或操作中的異常。

示例:隨機重試機制

import randomretries = 3
for i in range(retries):try:num = random.randint(0, 1)result = 10 / num  # 可能觸發除以0錯誤print("結果:", result)breakexcept ZeroDivisionError:print(f"第 {i+1} 次嘗試失敗,重試中...")
else:print("所有嘗試均失敗!")

總結

  • 條件分支:通過 random 庫生成隨機條件值(如 randint(), random())。
  • 循環控制:利用隨機數控制循環次數或終止條件(如 while + break)。
  • 數據操作:隨機選擇元素(choice)、打亂順序(shuffle)或生成隨機樣本(sample)。
  • 實際應用:隨機驗證碼、游戲邏輯、模擬測試數據等。

掌握 random 庫與流程控制的結合,可以編寫更動態、靈活的程序邏輯呦!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/902650.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902650.shtml
英文地址,請注明出處:http://en.pswp.cn/news/902650.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

密碼學貨幣混幣器詳解及python實現

目錄 一、前言二、混幣器概述2.1 混幣器的工作原理2.2 關鍵特性三、數據生成與預處理四、系統架構與流程五、核心數學公式六、異步任務調度與 GPU 加速七、PyQt6 GUI 設計八、完整代碼實現九、自查測試與總結十、展望摘要 本博客聚焦 “密碼學貨幣混幣器實現”,以 Python + P…

各種各樣的bug合集

一、連不上數據庫db 1.可能是密碼一大包東西不對&#xff1b; 2.可能是里面某個port和數據庫不一樣&#xff08;針對于修改了數據庫但是連不上的情況&#xff09;&#xff1b; 3.可能是git代碼沒拉對&#xff0c;再拉一下代碼。? 二、沒有這個包 可能是可以#注釋掉。? …

面陣相機中M12鏡頭和遠心鏡頭的區別及性能優勢

以下是關于面陣相機中M12鏡頭和遠心鏡頭的區別及性能優勢的詳細分析&#xff0c;結合知識庫內容整理如下&#xff1a; 一、M12鏡頭與遠心鏡頭的核心區別 1. 設計原理與光學特性 特性M12鏡頭遠心鏡頭光學設計標準鏡頭設計&#xff0c;無特殊光學校正&#xff0c;依賴傳統光路。…

從內核到應用層:深度剖析信號捕捉技術棧(含sigaction系統調用/SIGCHLD回收/volatile內存屏障)

Linux系列 文章目錄 Linux系列前言一、進程對信號的捕捉1.1 內核對信號的捕捉1.2 sigaction()函數1.3 信號集的修改時機 二、可重入函數三、volatile關鍵字四、SIGCHLD信號 前言 Linux系統中&#xff0c;信號捕捉是指進程可以通過設置信號處理函數來響應特定信號。通過信號捕捉…

DDD領域驅動與傳統CRUD

DDD 是一套 應對復雜業務系統 的設計方法論&#xff0c;核心是 讓代碼直接映射業務邏輯&#xff0c;避免技術實現與業務需求脫節。 關鍵區別&#xff1a; 傳統開發&#xff1a;根據數據庫表寫 CRUD&#xff08;技術驅動&#xff09;。DDD&#xff1a;根據業務行為建模&#xf…

20. git diff

基本概述 git diff的作用是&#xff1a;比較代碼差異 基本用法 1.工作區 VS 暫存區 git diff [file]2.暫存區 VS 最新提交 git diff --staged [file] # 或 git diff --cached [file]3.工作區 VS 最新提交 git diff HEAD [file]高級用法 1.比較兩個提交間的差異 git dif…

大模型面經 | 春招、秋招算法面試常考八股文附答案(五)

大家好,我是皮先生!! 今天給大家分享一些關于大模型面試常見的面試題,希望對大家的面試有所幫助。 往期回顧: 大模型面經 | 春招、秋招算法面試常考八股文附答案(RAG專題一) 大模型面經 | 春招、秋招算法面試常考八股文附答案(RAG專題二) 大模型面經 | 春招、秋招算法…

Sql刷題日志(day5)

面試&#xff1a; 1、從數據分析角度&#xff0c;推薦模塊怎么用指標衡量&#xff1f; 推薦模塊主要目的是將用戶進行轉化&#xff0c;所以其主指標是推薦的轉化率推薦模塊的指標一般都通過埋點去收集用戶的行為并完成相應的計算而形成相應的指標數據&#xff0c;而這里的驅動…

封裝 element-ui 二次彈框

author 封裝 element-ui 彈框 param text 文本內容 &#xff08;不傳默認顯示 確定執行此操作嗎&#xff1f; &#xff09; param type 彈框類型&#xff08;不傳默認warning類型&#xff09; param title 彈框標題&#xff08;不傳默認顯示 提示 &#xff09; export fun…

【Rust 精進之路之第12篇-生命周期·入門】為何需要與顯式標注 (`‘a`):讓編譯器讀懂引用的“有效期”

系列: Rust 精進之路:構建可靠、高效軟件的底層邏輯 作者: 碼覺客 發布日期: 2025-04-20 引言:懸垂引用的“幽靈”與編譯器的“偵探” 在前面的章節中,我們深入學習了 Rust 的所有權系統,以及如何通過引用 (& 和 &mut) 進行借用,從而在不轉移所有權的情況下安…

[密碼學實戰]CTF競賽高頻加密與解密技術詳解

CTF競賽高頻加密與解密技術詳解 一、CTF加密體系全景圖 在CTF密碼學挑戰中&#xff0c;加解密技術主要分為四大戰域&#xff1a; #mermaid-svg-lmm07BXqYAGYjymI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-lm…

docker.desktop下安裝普羅米修斯prometheus、grafana并看服務器信息

目標 在docker.desktop下先安裝這三種組件,然后顯示當前服務的CPU等指標。各種坑已踩,用的是當前時間最新的鏡像 核心關系概述 組件角色依賴關系Prometheus開源監控系統,負責 數據采集、存儲、查詢及告警。依賴 Node-Exporter 提供的指標數據。Node-Exporter專用的 數據采集…

《MySQL:MySQL表的內外連接》

表的連接分為內連接和外連接。 內連接 內連接實際上就是利用where子句對兩種表形成的笛卡爾積進行篩選&#xff0c;之前的文章中所用的查詢都是內連接&#xff0c;也是開發中使用的最多的連接查詢。 select 字段 from 表1 inner join 表2 on 連接條件 and 其他條件&#xff1…

實現SpringBoot底層機制【Tomcat啟動分析+Spring容器初始化+Tomcat 如何關聯 Spring容器】

下載地址&#xff1a; https://download.csdn.net/download/2401_83418369/90675207 一、搭建環境 創建新項目 在pom.xml文件中導入依賴 &#xff08;一定要刷新Maven&#xff09;排除內嵌的Tomcat&#xff0c;引入自己指定的Tomcat <?xml version"1.0" enco…

從零開始構建微博爬蟲:實現自動獲取并保存微博內容

從零開始構建微博爬蟲&#xff1a;實現自動獲取并保存微博內容 前言 在信息爆炸的時代&#xff0c;社交媒體平臺已經成為信息傳播的重要渠道&#xff0c;其中微博作為中國最大的社交媒體平臺之一&#xff0c;包含了大量有價值的信息和數據。對于研究人員、數據分析師或者只是…

Uniapp微信小程序:輕松獲取用戶頭像和昵稱

參考文獻&#xff1a;Uniapp微信小程序&#xff1a;輕松獲取用戶頭像和昵稱-百度開發者中心 (baidu.com) uni.login({ provider: weixin, success: function (loginRes) { console.log(loginRes.authResult); // 打印登錄憑證 // 使用登錄憑證獲取用戶信息 uni.getUserInfo({ …

【自然語言處理與大模型】大模型(LLM)基礎知識③

&#xff08;1&#xff09;大模型的“7B”是什么意思&#xff1f; "B"通常代表“Billion”&#xff0c;即十億。因此&#xff0c;當提到7B時&#xff0c;指的是該模型擁有7 billion&#xff08;70億&#xff09;個參數。 &#xff08;2&#xff09;模型后面標的“ins…

聊聊自動化用例的維護

自動化測試中的農藥悖論&#xff1a;為何長期維護至關重要 自動化測試常被視為"一次編寫&#xff0c;永久有效"的解決方案&#xff0c;但隨著時間的推移&#xff0c;即使設計最精良的測試套件也會逐漸失效。這種現象被稱為農藥悖論&#xff08;Pesticide Paradox&am…

微幀Visionular斬獲NAB Show 2025年度產品獎

在本月剛結束的NAB Show 2025展會上&#xff0c;全球領先的視頻編碼與AI超高清服務提供商微幀Visionular大放異彩&#xff0c;其核心產品AI-driven Video Compression&#xff08;AI視頻智能編碼引擎&#xff09;不僅在展會中吸引了眾多行業目光&#xff0c;更憑借其卓越的編碼…

idea中運行groovy程序報錯

我的項目是使用的 gradle 構建的。 在 idea 中運行Groovy的面向對象程序報錯如下&#xff1a; Execution failed for task :Person.main(). > Process command G:/Program Files/jdk-17/jdk-17.0.12/bin/java.exe finished with non-zero exit value 1* Try: Run with --s…