在Python学习中,经常会遇到np.random.seed(),那它究竟的作用是什么呢?以下是本人的初略见解:
在随机数生成过程中,系统并不是按照我们以为的“随机”来生成随机数,而是按照某种特定算法生成随机数。所以,生成过程就是有规律可言。
在我查看了多篇博客后,我总结出来的规律就是:np.random.seed()函数只是规定了将要生成的随机数的输出值,而就是因为了此初始值。在接下来的生成随机数过程中,因为随机数的生成是有规律的,所有在规定了初始值后,接下来的生成过程也是有规律的(是由某种算法所生成)。以下代码是我做的测试:
import numpy as np
np.random.seed(1)
i = 0
while(i<5):
print(np.random.rand(1))
i+=1
np.random.seed(1)
i = 0
while(i<5):
print(np.random.rand(1))
i+=1
np.random.seed(0)
i = 0
while(i<5):
print(np.random.rand(1))
i+=1
以下是我的输出结果:
[0.417022]
[0.72032449]
[0.00011437]
[0.30233257]
[0.14675589]
[0.417022]
[0.72032449]
[0.00011437]
[0.30233257]
[0.14675589]
[0.99192638]
[0.78324486]
[0.5358388]
[0.53565]
[0.00010868]
可以看到,第一组结果与第二组结果完全相同。因为他们的seed函数的传入值相同,根据算法生成随机数导致一二组在接下的生成过程中也生成相同的随机数。第三组的传入参数不同,所以第三组的所有数组不前两组不同。
当然,如果不对seed函数传入参数,那么系统将随机生成随机数。
那么np.random.seed()的作用是啥,有什么用途? 例如,在你编写某些代码教程的时候,你可以设置初值,可以使得读者与你的结果相同。