import random是 Python 中导入标准库模块random的语句,用于生成伪随机数、进行随机抽样、打乱序列等操作。该模块提供了多种函数,例如:
random.random():返回 [0.0, 1.0) 区间内的随机浮点数random.randint(a, b):返回 [a, b] 区间内的随机整数random.choice(seq):从非空序列中随机选择一个元素random.shuffle(lst):就地打乱列表顺序random.sample(population, k):从总体中无放回地随机抽取 k 个不重复元素
✅ 使用前必须先执行import random(或from random import */from random import randint等更精细的导入方式)。
# 示例:生成5个1~10之间的随机整数(可重复)numbers=[random.randint(1,10)for_inrange(5)]print(numbers)# 如:[3, 7, 1, 9, 4]random.seed()的作用是初始化随机数生成器的内部状态(即“种子”)。Python 的random模块使用确定性算法(Mersenne Twister)生成伪随机数,该算法从一个初始整数值(种子)出发,按固定规则生成后续随机数序列。调用seed(n)后,只要起始种子n相同,后续调用random.random()、randint()等函数产生的整个随机序列将完全一致。
✅ 为什么调试时经常设置固定种子?
- 可复现性(Reproducibility):程序中若含随机行为(如数据打乱、随机初始化、蒙特卡洛模拟),不设种子会导致每次运行结果不同,难以定位 bug 或验证逻辑。
- 单元测试稳定:测试用例需输出确定结果,固定种子确保随机过程可控。
- 实验对比公平:在机器学习中,固定种子可保证不同模型/超参实验基于完全相同的训练集划分和初始化,排除随机性干扰。
importrandom random.seed(42)# 固定种子print([random.randint(1,6)for_inrange(3)])# 总是 [6, 1, 1]random.seed(42)# 重置为同一种子print([random.randint(1,6)for_inrange(3)])# 再次输出 [6, 1, 1]⚠️ 注意:
- 若不显式调用
seed(),Python 默认使用系统时间等熵源自动播种(seed(None)),结果不可复现; seed()影响的是全局random模块实例,若需隔离随机状态,应使用random.Random()创建独立实例。