📜  random.seed (1)

📅  最后修改于: 2023-12-03 14:46:55.201000             🧑  作者: Mango

random.seed()介绍

简介

random.seed(a=None, version=2) 用于指定随机数生成器的种子,生成随机数之前,通过种子确定该随机数生成器的初始状态,从而保证了运行结果可重复。

参数

a 可选参数,默认为None。当a 为None时,使用当前的系统时间作为种子。当a为int类型时,种子为a。当a为str类型时,先使用hashlib.md5()算法将该串转换成16进制数字,再将这些数字转化成10进制数作为种子。当a为bytearray类型时,先使用hashlib.sha512()算法将该数组转换成字节串,再将该字节串转化成10进制数作为种子。

version 可选参数,int类型,默认是2,用于设置种子生成的随旧程度。在Python2中,version=1;在Python3中,version=2。在Python3.2之前,version=1时,使用的是版本1的随机数生成器,版本2时使用的是版本2,对于Python3.2及之后的版本, version=1不再支持。

返回值

该函数没有返回值。

示例
import random

random.seed(10)
a = random.random()
print(a)

random.seed(10)
b = random.random()
print(b)

该段代码输出结果:

0.5714025946899135
0.5714025946899135

在程序中调用random.seed(10)指定种子,两次调用random.random()函数得到的结果一致,因为使用的是同一个种子。如果不指定种子,两次得到的结果会不一样。

注意点
  1. Python2和Python3中,random.seed()参数类型有所不同,在使用时要注意。
  2. 在Python3.2及其之后的版本中,不支持version=1。
  3. 在调用生成随机数的函数前,需要先指定种子,否则每次得到的结果都不同。在调用了两次以上同样的种子后,得到的随机数序列是相同的。
import random

random.seed(10)
a = random.random()
print(a)

random.seed(10)
b = random.random()
print(b)

random.seed(10)
c1 = random.random()
c2 = random.random()
c3 = random.random()
print(c1, c2, c3)

random.seed(20)
d = random.random()
print(d)

该段代码输出结果:

0.5714025946899135
0.5714025946899135
0.5714025946899135 0.4288890546751146 0.5780913011344704
0.9056396761745207
  1. 不同的种子会产生不同的随机数序列。
import random

random.seed(10)
a1 = random.random()

random.seed(20)
a2 = random.random()

print(a1, a2)

该段代码输出结果:

0.5714025946899135 0.9056396761745207