随机数生成
是什么:通过算法产生不可预测的数值序列。
为什么:用于加密、模拟、抽样、游戏等需要不确定性的场景。
分类:
- 真随机:基于物理现象(硬件)
- 伪随机:基于算法(软件)
Python 示例
python
import random
import secrets
# 基础随机数
print("0-1 随机浮点数:", random.random())
print("1-10 随机整数:", random.randint(1, 10))
print("随机选择:", random.choice(['A', 'B', 'C']))
# 安全随机数(加密级别)
print("安全随机数:", secrets.randbelow(100))
print("安全令牌:", secrets.token_hex(16))
# 随机抽样
items = list(range(20))
print("随机样本:", random.sample(items, 5))
print("打乱顺序:", random.shuffle(items) or items)
# 高斯分布
print("正态分布:", random.gauss(0, 1))
输出示例:
text
0-1 随机浮点数: 0.748321 1-10 随机整数: 7 随机选择: B 安全随机数: 42 安全令牌: a1b2c3d4e5f67890 随机样本: [3, 15, 8, 12, 1] 打乱顺序: [7, 2, 15, 0, 12, ...] 正态分布: 0.234567
核心方法对比
| 方法 | 用途 | 安全性 |
|---|---|---|
random() | 通用随机 | 低 |
secrets | 密码学安全 | 高 |
numpy.random | 科学计算 | 中 |
应用场景
- 游戏:
random.randint(1, 6)# 骰子 - 抽奖:
random.sample(users, 10)# 抽取获奖者 - 加密:
secrets.token_urlsafe(32)# API密钥 - 测试:
random.gauss(100, 15)# 模拟数据
一句话总结:Python 提供多层级随机数生成,从基础的 random 到加密安全的 secrets,满足不同场景的随机性需求。