seed()用于指定随机数生成时所用算法开始的整数值,如果使用相同的seed()值,则每次生成的随机数都相同;如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异
from numpy import random
num = 0
while num < 5:
random.seed()
print(random.random())
num += 1
'''
第一次执行时的结果:
0.7601325271871893
0.8037047502000352
0.7583274205079213
0.0216286601791702
0.20125280317022431
第二次执行时的结果:
0.6253748753047988
0.5298164006149453
0.49746740962231206
0.614111668129977
0.07029823222050369
'''
上面的seed()中是没有数字的,此时我们在seed()中添加一个数字
from numpy import random
num = 0
while num < 5:
random.seed(4)
print(random.random())
num += 1
'''
第一次执行时的结果:
0.9670298390136767
0.9670298390136767
0.9670298390136767
0.9670298390136767
0.9670298390136767
第二次执行时的结果:
0.9670298390136767
0.9670298390136767
0.9670298390136767
0.9670298390136767
0.9670298390136767
'''
# 如果将seed()中的数字由4改成5
num = 0
while num < 5:
random.seed(5)
print(random.random())
num += 1
'''
第一次执行时的结果:
0.22199317108973948
0.22199317108973948
0.22199317108973948
0.22199317108973948
0.22199317108973948
第二次执行时的结果:
0.22199317108973948
0.22199317108973948
0.22199317108973948
0.22199317108973948
0.22199317108973948
'''
上面的代码中seed()都是在循环中,我们将seed()放到循环外,并且在seed()中添加一个数字
from numpy import random
num = 0
random.seed(5)
while num < 5:
print(random.random())
num += 1
'''
第一次执行时的结果:
0.22199317108973948
0.8707323061773764
0.20671915533942642
0.9186109079379216
0.48841118879482914
第二次执行时的结果:
0.22199317108973948
0.8707323061773764
0.20671915533942642
0.9186109079379216
0.48841118879482914
'''
此时,虽然一个循环中每一次的random.random()
结果并不相同,但是第一次代码执行的结果和第二次代码执行的结果相同
针对上述几次代码执行的结果,我们来做一下总结:
seed()中的数字是计算机创建随机数的依据,确定seed()中的数字后(比如seed(5)),之后所有的随机操作都有确定性。上述例子中,seed()在循环外时,多次运行
random.random()
会产生一个固定顺序的序列;seed()在循环内时,每次都是重新定义一次相同的seed()(seed(5)),然后执行一次random.random()
,因此每次产生的都是固定的随机序列的首项
参考:numpy.random.seed()的使用