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.mzph.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…