Python可复制的随机数:种子和状态

示例

设置特定的种子将创建固定的随机数序列:

random.seed(5)                 # 创建固定状态         
print(random.randrange(0, 10))  # 获取0到9之间的随机整数
# 出:9
print(random.randrange(0, 10))
# 出:4

重置种子将再次创建相同的“随机”序列:

random.seed(5)                 # 将随机模块重置为相同的固定状态。
print(random.randrange(0, 10))
# 出:9
print(random.randrange(0, 10))
# 出:4

由于种子是固定的,因此这些结果始终为9和4。如果不要求具有特定数字,则仅需使这些值相同就可以使用getstate并setstate恢复到先前的状态:

save_state = random.getstate()  # 获取当前状态
print(random.randrange(0, 10))
# 出:5
print(random.randrange(0, 10))
# 出:8

random.setstate(save_state)     # 重置为保存状态
print(random.randrange(0, 10))
# 出:5
print(random.randrange(0, 10))
# 出:8

要再次伪随机化序列,请seed使用None:

random.seed(None)

或seed不带任何参数的方法调用:

random.seed()