Random
Python 的 random 模块使用伪随机数生成器(Mersenne Twister),适用于:
- 数据采样
- 随机打乱
- 模拟、测试
- 生成随机 token
- 随机等待时间(爬虫常用)
- 随机选择内容(消息、情绪价值话术等)
不适用于密码安全场景!(请用 secrets 模块)
import random
random.random()
random.uniform(1.5, 3.8)
包含两个端点。
random.randint(1, 10) # 包含 1 和 10
random.randrange(1, 10) # 不包含 10
random.choice(["A", "B", "C"])
random.sample(range(100), 5)
random.choices(["A", "B", "C"], k=3)
支持权重:
random.choices(["A", "B", "C"], weights=[0.7, 0.2, 0.1], k=10)
data = [1, 2, 3, 4, 5]
random.shuffle(data)
import time
time.sleep(random.uniform(0.5, 1.5))
虽然 random 不安全,但用于一般用途可以:
token = ''.join(random.choices("abcdefghijklmnopqrstuvwxyz0123456789", k=16))
安全场景请用:
import secrets
secrets.token_hex(16)
为了可复现的随机结果:
random.seed(1234)
重启脚本后相同的随机数顺序会重复出现。
random.gauss(mu=0, sigma=1)
random.triangular(low=1, high=5, mode=2)
def random_delay():
time.sleep(random.uniform(0.8, 2.0))
def random_title():
titles = [
"今日最稳建议",
"情绪价值高能提醒",
"暖心一句话",
"今日最佳情绪回馈"
]
return random.choice(titles)
def pick_random_stocks(db, k=5):
all_codes = db.get_all_stock_codes()
return random.sample(all_codes, k)
for _ in range(100):
result = compute(random.random())
| 模块 | 场景 | 特点 |
|---|---|---|
| random | 普通随机 | 轻量、速度快、非安全 |
| secrets | 密码学场景 | 安全(不可预测) |
| numpy.random | 科学计算 | 强大,可向量化 |
| 函数 | 说明 |
|---|---|
| random.random() | 0-1 浮点数 |
| random.uniform(a, b) | 随机浮点(含端点) |
| random.randint(a, b) | 随机整数(含端点) |
| random.randrange(a, b) | 随机整数(不含 b) |
| random.choice(seq) | 随机选一个 |
| random.sample(seq, k) | 采样(不重复) |
| random.choices(seq, weights, k) | 采样(可重复) |
| random.shuffle(list) | 原地打乱 |
| random.seed(x) | 设置随机种子 |
| random.gauss(mu, sigma) | 正态分布 |
| random.triangular(a, b, mode) | 三角分布 |
random 模块核心用途:
- 生成随机数(int/float)
- 随机选择
- 随机采样
- 随机排列
- 模拟数据
- 随机延迟(爬虫)
- 控制 seed 实现结果可重复