Python 标准库:random——随机数

文章目录

  • 模块介绍
  • 主要函数
    • [- random()](#- random())
    • [- randint()](#- randint())
    • [- choice()](#- choice())
    • [- shuffle()](#- shuffle())
    • [- sample()](#- sample())
    • [- seed()](#- seed())
    • [- gauss()](#- gauss())
    • [- betavariate()](#- betavariate())
  • 注意事项
  • 总结

模块介绍

random 模块是 Python 的标准库之一,提供了生成伪随机数的功能,并支持多种常见的随机操作,如随机选择元素、随机打乱序列、生成指定范围的随机整数等。这个模块广泛应用于数据模拟、游戏开发、密码学等领域。

random 模块的实现基于"伪随机"算法,这意味着它生成的数值并不是完全随机的,而是通过某种数学公式推算出来的,因此它是确定性的,但足够接近随机。对于需要高质量随机性的场合,可以考虑使用 secrets 模块,它提供了更高安全性的随机数生成。

主要函数

函数 描述
random() 返回一个 [0, 1) 区间的随机浮点数。
randint(a, b) 返回一个随机整数 N,满足 a <= N <= b。
choice(seq) 从非空序列 seq 中随机选择一个元素。
shuffle(seq) 将序列 seq 中的元素随机排列。
sample(population, k) 从总体 population 中随机抽取 k 个不重复的元素。
uniform(a, b) 返回一个随机浮点数 N,满足 a <= N <= b。
seed(a=None) 初始化随机数生成器的种子,确定随机数的生成顺序。
gauss(mu, sigma) 返回一个高斯(正态)分布的随机数,平均值为 mu,标准差为 sigma。
triangular(low, high, mode) 返回一个三角形分布的随机数,low 为最小值,high 为最大值,mode 为最可能值。
betavariate(alpha, beta) 返回一个 beta 分布的随机数。

- random()

生成随机浮点数

python 复制代码
import random

# 生成一个 0 到 1 之间的随机浮点数
print(random.random())  # 输出如 0.3745401188473625

- randint()

生成随机整数数

python 复制代码
import random

# 生成一个 1 到 100 之间的随机整数
print(random.randint(1, 100))  # 输出如 42

- choice()

从列表中随机选择一个元素。

python 复制代码
import random

# 从列表中随机选择一个元素
items = ['apple', 'banana', 'cherry', 'date']
print(random.choice(items))  # 输出如 'banana'

- shuffle()

打乱列表的顺序

python 复制代码
import random

# 打乱列表的顺序
cards = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']
random.shuffle(cards)
print(cards)  # 输出如 ['5', 'K', '9', '2', 'J', 'A', '8', 'Q', '3', '6', '7', '4', '10']

- sample()

从一个列表中随机选择指定个数不重复的元素

python 复制代码
import random

# 从一个列表中随机选择 3 个不重复的元素
items = ['apple', 'banana', 'cherry', 'date']
print(random.sample(items, 3))  # 输出如 ['banana', 'cherry', 'apple']

- seed()

python 复制代码
import random

# 设置随机数生成器的种子,确保每次执行结果一致
random.seed(42)
print(random.random())  # 输出如 0.3745401188473625
random.seed(42)
print(random.random())  # 输出如 0.3745401188473625(与上次一致)

- gauss()

python 复制代码
import random

# 生成一个均值为 0,标准差为 1 的正态分布随机数
print(random.gauss(0, 1))  # 输出如 -0.3745401188473625

- betavariate()

python 复制代码
import random

# 生成一个 Beta 分布随机数
print(random.betavariate(2, 5))  # 输出如 0.158159

注意事项

  • 伪随机性:random 模块生成的数值是伪随机的,基于初始化的种子。对于高安全性的需求(如密码学),建议使用 secrets 模块。
  • 种子设置:如果不设置种子,random 模块将基于系统时间等动态数据初始化随机数生成器。使用固定种子时,可以确保每次生成的随机数序列一致(便于调试或测试)。
  • 性能考虑:虽然 random 模块满足大部分应用需求,但如果要生成大量的随机数或需要更高性能的生成器,可以考虑使用第三方库(如 numpy.random)来获得更高效的随机数生成。
  • 随机性不是完全不可预测的:由于 random 使用的是伪随机数生成算法,最终的数值是确定性的,如果你需要更不可预测的随机数(比如用于加密用途),应使用专门的随机数生成器。

总结

random 模块是 Python 中非常强大的工具,提供了丰富的随机数生成功能和操作序列的工具。无论是进行数据模拟、游戏开发,还是进行抽样,random 模块都能够满足大部分的需求。

通过使用 random 模块中的函数,我们可以轻松地生成随机数、打乱序列、抽取样本等,提升代码的灵活性和可用性。对于需要高安全性随机数的场合,建议使用 secrets 模块。

相关推荐
计算机编程指导师6 小时前
计算机大数据项目推荐:基于Hadoop+Django的人工智能社交媒体情绪数据分析可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·spark·毕业设计·社交媒体
高级程序源6 小时前
springboot荆州旅游推介平台24175-计算机课程设计、毕业设计
vue.js·spring boot·python·mysql·django·课程设计
企业数字化笔记6 小时前
新租户注册成功却不能用?开通状态、初始化恢复与可用性验收
开发语言·python
Guarding and trust6 小时前
项目拆解(二):模型输出是‘野‘的——三层兜底+重分析,把AI变成可靠零件
java·人工智能·python·大模型·fastapi·ollama·错误兜底
用户298698530146 小时前
Python 实战:将 HTML 内容保存为图像文件
后端·python·html
for_ever_love__7 小时前
LangChain MultiVectorRetriever:一个文档存多个向量
人工智能·python·自然语言处理·langchain·ai大模型·多向量·摘要检索
迅猛龙办公室7 小时前
Python实现获取星期字符串
java·前端·python
wewowilling7 小时前
Coze智能体入门 --- AI Agent开发入门--第一章
python·低代码·agent·零代码·coze
Wx-bishekaifayuan7 小时前
springboot公考微信小程序35511-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
小猴子爱上树7 小时前
跨马翻译:批量图片翻译+视频字幕+智能抠图,一站式跨境电商翻译工具
python·音视频