numpy.random.seed()的使用

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()的使用

你可能感兴趣的:(python,python)