Python的random模块提供了一些用于生成随机数的函数,在某些情况下,我们需要生成指定的随机数序列,这时可以使用random.setstate函数来实现。
random.setstate函数作用
random.setstate函数用于设置随机数生成器的状态,即将生成器的内部状态变为指定的状态,从而达到生成指定的随机数序列的目的。
random.setstate函数参数
random.setstate函数接受一个参数state,表示要设置的随机数状态,这个状态是由random.getstate()函数获取的,是一个包含了生成器的内部状态、产生的随机数以及种子等信息的元组。
random.setstate 函数语法
random.setstate(state)
实例1
import random
# 获取当前状态
state = random.getstate()
# 生成5个随机数
for i in range(5):
print(random.randint(1,10), end = ',')
# 重置状态
random.setstate(state)
# 再次生成5个随机数
for i in range(5):
print(random.randint(1,10), end = ',')
运行结果:
8,7,2,2,3,
8,7,2,2,3,
上面的代码通过getstate函数获取了当前随机数生成器的状态,然后通过setstate函数将生成器状态重置为之前的状态,再次生成随机数,发现结果相同,说明随机数生成器生成的是同一随机数序列。
实例2
import random
# 设置种子
random.seed(1)
# 生成5个随机数
for i in range(5):
print(random.randint(1,10), end = ',')
# 获取当前状态
state = random.getstate()
# 重新设置种子
random.seed(2)
# 生成5个随机数
for i in range(5):
print(random.randint(1,10), end = ',')
# 恢复状态,再次生成5个随机数
random.setstate(state)
for i in range(5):
print(random.randint(1,10), end = ',')
运行结果:
3,10,2,10,1,
7,8,2,1,2,
3,10,2,10,1,
上面的代码先通过seed函数设置了种子为1,生成了5个随机数,然后获取当前的状态,再次通过seed函数设置种子为2,生成了5个随机数,最后通过setstate函数恢复了之前的状态,再次生成了5个随机数,发现结果和之前相同。这个例子说明了在使用setstate函数之前可以通过seed函数设置不同的种子来生成不同的随机数序列。