Python3 random 模块

random 模块用来产生"伪随机"数,让程序结果不确定,常用于游戏、模拟抽样、随机点名、生成验证码等场景。它是 Python 标准库的一部分,直接 import random 即可使用。

随机种子 seed

随机数由种子计算而来:设了相同的种子,后续产生的随机序列就完全相同,方便复现实验:

import random

random.seed(1)               # 设定种子
print(random.random())       # 输出:0.13436424411240122

random.seed(1)               # 重置同一种子
print(random.random())       # 输出:0.13436424411240122(序列复现)

常用函数速览

函数作用示例
random()返回 [0.0, 1.0) 的浮点数random.random()
uniform(a, b)返回 [a, b] 内的浮点数uniform(1, 10)
randint(a, b)返回 [a, b] 内整数(含两端)randint(1, 6)
randrange(a, b)返回 [a, b) 内整数randrange(0, 100)
choice(seq)从序列随机取一个元素choice(['红', '绿'])
sample(seq, k)不重复地取 k 个元素sample(range(10), 3)
shuffle(seq)原地打乱列表顺序shuffle(cards)

函数使用示例

import random

print(random.random())                 # 输出:0.8653...(每次不同)
print(random.uniform(1, 10))           # 输出:如 5.8321...
print(random.randint(1, 6))            # 输出:模拟掷骰子,1~6 间整数
print(random.randrange(100, 1000))     # 输出:100~999 间三位数
print(random.choice(['石头', '剪刀', '布']))  # 输出:随机一项

打乱与不重复抽样

import random

cards = ['A', '2', '3', '4']
random.shuffle(cards)              # 原地打乱
print(cards)                       # 输出:如 ['3', 'A', '4', '2']

print(random.sample(range(1, 50), 6))   # 输出:1~49 中不重复的 6 个数

生成随机验证码

用 random.choices 允许元素重复,可拼出数字或字母数字混合的验证码:

import random
import string

# 4 位纯数字验证码
print(''.join(random.choices('0123456789', k=4)))
# 6 位字母+数字验证码(每次输出不同,如 3fKp9Z)
print(''.join(random.choices(string.ascii_letters + string.digits, k=6)))

随机抽奖示例

从候选人中抽中奖者:不重复抽用 sample,抽走即删除可结合 pop:

import random

names = ['张三', '李四', '王五', '赵六']
winners = random.sample(names, 2)   # 抽 2 位不重复中奖者
print(winners)                      # 输出:如 ['王五', '张三']

# 洗牌后按顺序决定名次
random.shuffle(names)
print(names[0], '获得一等奖')

安全随机 secrets

random 的算法可预测,不适合做密码、令牌等安全用途;安全场景应改用 secrets 模块:

import secrets

print(secrets.token_hex(16))    # 输出:随机 32 位十六进制字符串

小结

random 模块满足日常随机需求:randint 取整数、choice/sample 取元素、shuffle 打乱、seed 复现结果;涉及安全场景一律改用 secrets。

笔记加载中…