当我们需要生成随机数时,可以使用Python内置的random
模块。而random
模块中的随机数生成器使用伪随机数算法,也就是它们使用的是确定性算法来伪随机生成数字序列。这意味着,如果我们在程序中多次使用相同的种子值来初始化随机数生成器,那么它们将生成相同的伪随机序列。这对于测试断言、记录随机数序列以及复现随机性问题是很有用的。seed()
是Python random库中的一个函数,它将种子作为参数,将随机数生成器初始化到一定状态,从而使得随机数序列可以重现。
seed()函数语法
seed()函数的语法如下:
random.seed(a=None, version=2)
其中:
a
: 可选参数,默认是根据当前时间生成随机种子version
: 此参数不常用,它定义了算法的可移植性
规定:若未指定随机种子的话,它将基于系统时间戳初始化的。
下面通过代码示例来说明seed()
函数的用法:
示例1 - seed()函数的基本用法
import random
# seed()函数不加参数调用
print('\nSeed 1')
random.seed()
print('Random number generated : ', random.randint(0, 10))
print('Random number generated : ', random.randint(0, 10))
print('Random number generated : ', random.randint(0, 10))
# seed()函数加入参数调用
print('\nSeed 2')
random.seed(5) # 将随机数生成器初始化到一定状态
print('Random number generated : ', random.randint(0, 10))
print('Random number generated : ', random.randint(0, 10))
print('Random number generated : ', random.randint(0, 10))
输出结果如下:
Seed 1
Random number generated : 1
Random number generated : 2
Random number generated : 0
Seed 2
Random number generated : 9
Random number generated : 4
Random number generated : 4
在示例1中,我们首先调用seed()
函数而没有添加参数,这表明我们使用当前日期和时间戳作为种子。我们发现在调用了三次randint(0, 10)
方法之后,每次随机生成的数字都是不同的。这是因为我们没有为随机数生成器提供固定的种子,因此每次运行都将“随机”生成不同的数字。
接下来,我们使用带有整数参数的seed()
函数进行了第二次调用。因为使用相同的随机种子,所以输出的三个数字均相同,并且在每次程序运行时也不会改变,这使程序更加可重现。
示例2 - 通过seed()函数生成随机数
import random
random.seed(10)
print('Random number generated with seed 10 : ', random.randint(0, 10))
random.seed(10)
print('Random number generated with seed 10 : ', random.randint(0, 10))
random.seed(3)
print('Random number generated with seed 3 : ', random.randint(0, 10))
random.seed(3)
print('Random number generated with seed 3 : ', random.randint(0, 10))
输出结果如下:
Random number generated with seed 10 : 5
Random number generated with seed 10 : 5
Random number generated with seed 3 : 5
Random number generated with seed 3 : 5
在示例2中,我们使用两个不同的种子值分别初始化了两个独立的随机数生成器。每个随机数生成器都在调用randint(0, 10)
时生成了相同的随机数字,因为在两种情况下都使用了相同的种子。 注意,我们在两次调用之间更改种子的值。
总结
Python中的seed()
函数将一个固定的值置于伪随机数生成器中,使得它将生成固定的数字序列。这对于测试随机数时尤其方便,因为始终使用相同的种子随机生成器可更容易地对随机性事件进行微调和验证。在使用随机数时必须要牢记的是,使用相同的种子将始终生成相同的随机数序列。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中的seed函数详解 - Python技术站