np.random.seed函数的作用
seed( ) 用于指定随机数生成时所用算法开始的整数值,如果使用相同的seed( )值,则每次生成的随即数都相同,如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。
代码示例
import numpy as np
print("======seed_test1======")
# 不设置seed
def seed_test1():
for i in range(3):
print(np.random.rand(4))
seed_test1()
print("======seed_test2======")
# 循环中设置相同的seed
def seed_test2():
for i in range(3):
np.random.seed(3)
print(np.random.rand(4))
seed_test2()
print("======seed_test3======")
#循环外设置相同的seed
def seed_test3():
np.random.seed(3)
for i in range(3):
print(np.random.rand(4))
seed_test3()
结果如下
======seed_test1======
[0.20434854 0.42638022 0.34712832 0.67241214]
[0.28500185 0.34103979 0.993351 0.7763475 ]
[0.86680178 0.85342493 0.18961571 0.71612183]
======seed_test2======
[0.5507979 0.70814782 0.29090474 0.51082761]
[0.5507979 0.70814782 0.29090474 0.51082761]
[0.5507979 0.70814782 0.29090474 0.51082761]
======seed_test3======
[0.5507979 0.70814782 0.29090474 0.51082761]
[0.89294695 0.89629309 0.12558531 0.20724288]
[0.0514672 0.44080984 0.02987621 0.45683322]
从上面的结果可以看出seed_test1中没有设置seed,则循环任意取值,seed_test2中在循环中设置了 np.random.seed(3), 使得三次输出的值一样,seed_test3中在在循环中设置了 np.random.seed(3), 使得三次输出的值也不一样,说明seed()只是一次有效。