Python 标准库之 random 模块

Python 的 random 模块提供了生成伪随机数的工具,可用于模拟随机过程、生成测试数据、实现随机化算法等场景。以下是该模块的核心功能和常见用法:

1. 随机数生成基础

1.1 浮点数随机数

python

import random

# 生成 [0.0, 1.0) 范围内的随机浮点数
random.random()  

# 生成 [a, b] 范围内的随机浮点数
random.uniform(1, 10)  
1.2 整数随机数

python

# 生成 [a, b] 范围内的随机整数(包含两端)
random.randint(1, 6)  # 模拟掷骰子

# 从 range(a, b, step) 中随机选择一个整数
random.randrange(0, 100, 2)  # 随机偶数

2. 序列操作

2.1 随机选择元素

python

# 从非空序列中随机选择一个元素
random.choice(['apple', 'banana', 'cherry'])

# 从非空序列中随机选择 k 个元素(可重复)
random.choices(['red', 'green', 'blue'], k=3)  # 可能重复
2.2 打乱序列

python

# 原地打乱列表元素的顺序(直接修改原列表)
items = [1, 2, 3, 4, 5]
random.shuffle(items)
print(items)  # 例如:[3, 1, 5, 4, 2]
2.3 随机采样

python

# 从序列中随机选择 k 个不重复的元素
random.sample(range(100), k=5)  # 常用于抽奖

3. 概率分布

python

# 正态分布(高斯分布)
random.gauss(mu=0, sigma=1)  # 均值 mu,标准差 sigma

# 其他分布:指数分布、贝塔分布等
random.expovariate(lambd=0.5)  # 指数分布

4. 随机数生成器种子(Seed)

通过设置相同的种子,可以重现相同的随机序列,常用于测试。

python

random.seed(42)  # 设置种子
print(random.random())  # 输出固定值:0.6394267984578837

random.seed(42)  # 重置种子
print(random.random())  # 再次输出相同值

5. 安全随机数(加密场景)

若需生成密码学安全的随机数(如令牌、密钥),建议使用 secrets 模块:

python

import secrets

# 生成安全的随机整数
secrets.randbelow(100)  # 0-99 范围内的安全随机数

# 生成安全的随机字节
secrets.token_bytes(16)  # 16 字节随机数据(适用于生成密钥)
注意事项
  • 伪随机性random 生成的是伪随机数,由确定性算法根据种子计算。
  • 线程安全:多线程环境下,每次调用 random 函数会自动加锁,避免冲突。
  • 加密安全random 不适合用于加密场景,需使用 secrets 或 os.urandom
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值