Python random 随机数
学习 random 模块 · 难度:入门 · +10XP
Python random 随机数
random 模块是 Python 标准库中用于生成伪随机数的工具模块。它基于梅森旋转算法(Mersenne Twister),可以生成各种分布的随机数,广泛应用于游戏开发、数据抽样、模拟仿真、密码生成等场景。
基本随机函数
import random
# random() - 生成 [0.0, 1.0) 之间的随机浮点数
print(random.random()) # 例如: 0.3744488717564646
# randint(a, b) - 生成 [a, b] 之间的随机整数
print(random.randint(1, 100)) # 例如: 42
# uniform(a, b) - 生成 [a, b] 之间的随机浮点数
print(random.uniform(1.5, 3.5)) # 例如: 2.718
# randrange(start, stop, step) - 从 range 中随机选择
print(random.randrange(0, 100, 5)) # 0, 5, 10, ..., 95 中随机选一个
序列操作函数
import random
items = ['苹果', '香蕉', '橙子', '葡萄', '西瓜']
# choice(seq) - 随机选择一个元素
print(random.choice(items)) # 例如: 橙子
# choices(seq, k) - 随机选择 k 个元素 (可重复)
print(random.choices(items, k=3)) # 例如: ['苹果', '苹果', '西瓜']
# sample(seq, k) - 随机选择 k 个元素 (不可重复)
print(random.sample(items, k=3)) # 例如: ['西瓜', '苹果', '香蕉']
# shuffle(seq) - 原地打乱序列顺序
random.shuffle(items)
print(items) # 顺序被打乱
种子设置与可重复随机
import random
# seed() - 设置随机种子,使随机数可重复
random.seed(42)
print(random.random()) # 0.6394267984578837
random.seed(42) # 重置种子
print(random.random()) # 0.6394267984578837 (相同结果)
# getstate() / setstate() - 保存和恢复随机状态
state = random.getstate()
r1 = random.random()
random.setstate(state)
r2 = random.random()
print(r1 == r2) # True
常用分布函数速查表
| 函数 | 分布类型 | 说明 |
|---|---|---|
| random() | 均匀分布 | [0.0, 1.0) 之间的浮点数 |
| uniform(a, b) | 均匀分布 | [a, b] 之间的浮点数 |
| randint(a, b) | 离散均匀 | [a, b] 之间的整数 |
| gauss(mu, sigma) | 正态分布 | 均值为 mu,标准差为 sigma |
| expovariate(lambd) | 指数分布 | 参数为 lambd |
实际应用示例
- 生成随机密码:使用
random.choices从字符集中随机选择 - 抽奖系统:使用
random.choice或random.sample从参与者列表中抽选 - 数据增强:在机器学习中随机打乱训练数据顺序
- 游戏开发:生成随机地图、随机敌人位置等