Skip to main content
Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Random

🎯 1. random 是什么?

Python 的 random 模块使用伪随机数生成器(Mersenne Twister),适用于:

  • 数据采样
  • 随机打乱
  • 模拟、测试
  • 生成随机 token
  • 随机等待时间(爬虫常用)
  • 随机选择内容(消息、情绪价值话术等)

不适用于密码安全场景!(请用 secrets 模块)

🟦 2. 常见随机数函数

2.1 获取 [0.0, 1.0) 的随机浮点数

import random
random.random()

2.2 获取范围随机浮点数

random.uniform(1.5, 3.8)

包含两个端点。

2.3 获取随机整数

random.randint(1, 10)   # 包含 1 和 10
random.randrange(1, 10) # 不包含 10

🟩 3. 随机选择与采样

3.1 随机选择一个元素

random.choice(["A", "B", "C"])

3.2 随机选择多个(不重复)

random.sample(range(100), 5)

3.3 随机选择多个(可重复)

random.choices(["A", "B", "C"], k=3)

支持权重:

random.choices(["A", "B", "C"], weights=[0.7, 0.2, 0.1], k=10)

🟦 4. 随机打乱

data = [1, 2, 3, 4, 5]
random.shuffle(data)

🟩 5. 随机等待时间(爬虫常用)

import time

time.sleep(random.uniform(0.5, 1.5))

🟦 6. 随机 Token / ID 生成

虽然 random 不安全,但用于一般用途可以:

token = ''.join(random.choices("abcdefghijklmnopqrstuvwxyz0123456789", k=16))

安全场景请用:

import secrets
secrets.token_hex(16)

🟩 7. 随机种子 seed

为了可复现的随机结果:

random.seed(1234)

重启脚本后相同的随机数顺序会重复出现。

🟦 8. 正态分布、概率分布

8.1 正态分布

random.gauss(mu=0, sigma=1)

8.2 三角分布

random.triangular(low=1, high=5, mode=2)

🟩 9. 综合示例(工程级)

9.1 随机“代理延迟”模拟(爬虫)

def random_delay():
    time.sleep(random.uniform(0.8, 2.0))

9.2 随机标题生成(适合你的情绪价值话术库)

def random_title():
    titles = [
        "今日最稳建议",
        "情绪价值高能提醒",
        "暖心一句话",
        "今日最佳情绪回馈"
    ]
    return random.choice(titles)

9.3 随机抽样数据库内容

def pick_random_stocks(db, k=5):
    all_codes = db.get_all_stock_codes()
    return random.sample(all_codes, k)

9.4 模拟 N 次 API 调用

for _ in range(100):
    result = compute(random.random())

🟦 10. random vs secrets vs numpy.random 对比

模块 场景 特点
random 普通随机 轻量、速度快、非安全
secrets 密码学场景 安全(不可预测)
numpy.random 科学计算 强大,可向量化

🟩 11. random 模块 API 一览表(速查)

函数 说明
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 实现结果可重复