Python 的 random
模块提供了生成伪随机数的工具,可用于模拟随机过程、生成测试数据、实现随机化算法等场景。以下是该模块的核心功能和常见用法:
python
import random
# 生成 [0.0, 1.0) 范围内的随机浮点数
random.random()
# 生成 [a, b] 范围内的随机浮点数
random.uniform(1, 10)
python
# 生成 [a, b] 范围内的随机整数(包含两端)
random.randint(1, 6) # 模拟掷骰子
# 从 range(a, b, step) 中随机选择一个整数
random.randrange(0, 100, 2) # 随机偶数
python
# 从非空序列中随机选择一个元素
random.choice(['apple', 'banana', 'cherry'])
# 从非空序列中随机选择 k 个元素(可重复)
random.choices(['red', 'green', 'blue'], k=3) # 可能重复
python
# 原地打乱列表元素的顺序(直接修改原列表)
items = [1, 2, 3, 4, 5]
random.shuffle(items)
print(items) # 例如:[3, 1, 5, 4, 2]
python
# 从序列中随机选择 k 个不重复的元素
random.sample(range(100), k=5) # 常用于抽奖
python
# 正态分布(高斯分布)
random.gauss(mu=0, sigma=1) # 均值 mu,标准差 sigma
# 其他分布:指数分布、贝塔分布等
random.expovariate(lambd=0.5) # 指数分布
通过设置相同的种子,可以重现相同的随机序列,常用于测试。
python
random.seed(42) # 设置种子
print(random.random()) # 输出固定值:0.6394267984578837
random.seed(42) # 重置种子
print(random.random()) # 再次输出相同值
若需生成密码学安全的随机数(如令牌、密钥),建议使用 secrets
模块:
python
import secrets
# 生成安全的随机整数
secrets.randbelow(100) # 0-99 范围内的安全随机数
# 生成安全的随机字节
secrets.token_bytes(16) # 16 字节随机数据(适用于生成密钥)
random
生成的是伪随机数,由确定性算法根据种子计算。random
函数会自动加锁,避免冲突。random
不适合用于加密场景,需使用 secrets
或 os.urandom
。