在使用numpy时,难免会用到随机数生成器。numpy.random.seed(),随机数种子,每次可以生成相同的随机数。
两个问题:
1.利用随机数种子,每次生成的随机数相同,如何理解?
2.随机数种子的参数怎么选择?经常看到np.random.seed(Argument),这个参数不一样,有的是0,有的是1,当然还有其他数,那么如何选择参数呢?
以np.random.randn()函数为例
import numpy as np
if __name__ == '__main__':
i = 0
while(i < 6):
if(i < 3):
# np.random.seed(0)
print(np.random.randn(1,5))
else:
np.random.seed(0)
print(np.random.randn(1,5))
pass
i += 1
print('\n--------------------------------------------------------------------------\n')
i = 0
while(i < 2):
print(np.random.randn(1,5))
i += 1
print('\n****************************************************************************\n')
print(np.random.randn(2,5))
print('\n############################################################################\n')
np.random.seed(0)
i = 0
while(i < 8):
print(np.random.randn(1,5))
i += 1
'''
输出结果:
[[-1.76621289 -1.05873992 -0.66419152 -0.01032896 -1.45679443]]
[[ 0.72057899 -0.25160152 -0.69906354 -1.27840913 0.9767471 ]]
[[-0.39028757 0.40151722 -1.42781399 0.55213104 0.91395741]]
[[1.76405235 0.40015721 0.97873798 2.2408932 1.86755799]]
[[1.76405235 0.40015721 0.97873798 2.2408932 1.86755799]]
[[1.76405235 0.40015721 0.97873798 2.2408932 1.86755799]]
--------------------------------------------------------------------------
[[-0.97727788 0.95008842 -0.15135721 -0.10321885 0.4105985 ]]
[[0.14404357 1.45427351 0.76103773 0.12167502 0.44386323]]
****************************************************************************
[[ 0.33367433 1.49407907 -0.20515826 0.3130677 -0.85409574]
[-2.55298982 0.6536186 0.8644362 -0.74216502 2.26975462]]
############################################################################
[[1.76405235 0.40015721 0.97873798 2.2408932 1.86755799]]
[[-0.97727788 0.95008842 -0.15135721 -0.10321885 0.4105985 ]]
[[0.14404357 1.45427351 0.76103773 0.12167502 0.44386323]]
[[ 0.33367433 1.49407907 -0.20515826 0.3130677 -0.85409574]]
[[-2.55298982 0.6536186 0.8644362 -0.74216502 2.26975462]]
[[-1.45436567 0.04575852 -0.18718385 1.53277921 1.46935877]]
[[ 0.15494743 0.37816252 -0.88778575 -1.98079647 -0.34791215]]
[[ 0.15634897 1.23029068 1.20237985 -0.38732682 -0.30230275]]
'''
'''
总结:
1.对技术种子队后面的结果一直有影响。同时,加了随机数种子以后,后面的随机数组都是按一定顺序生成的。
2.输出结果中,print(np.random.randn(2,5))的输出结果和最后一个while循环中两个一行乌列的数组结果相同,
说明,在生成多行随机数组时,是由单行随机数组组合而成的。
现在我破门回答了第一个疑惑:利用随机数种子,每次生成的随机数相同,这是什么意思?
--就是使后面的随机数按照一定得顺序生成。
'''
import numpy as np
if __name__ == '__main__':
i = 0
np.random.seed(0)
while(i < 3):
print(np.random.randn(1,5))
i += 1
i = 0
while(i < 2):
print(np.random.randn(1,5))
i += 1
print("\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n")
i = 0
np.random.seed(1) #如果改为np.random.seed(0)的话,结果将于上面两个while循环一样。
while(i < 5):
print(np.random.randn(1,5))
i += 1
'''
输出结果:
[[1.76405235 0.40015721 0.97873798 2.2408932 1.86755799]]
[[-0.97727788 0.95008842 -0.15135721 -0.10321885 0.4105985 ]]
[[0.14404357 1.45427351 0.76103773 0.12167502 0.44386323]]
[[ 0.33367433 1.49407907 -0.20515826 0.3130677 -0.85409574]]
[[-2.55298982 0.6536186 0.8644362 -0.74216502 2.26975462]]
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[[ 1.62434536 -0.61175641 -0.52817175 -1.07296862 0.86540763]]
[[-2.3015387 1.74481176 -0.7612069 0.3190391 -0.24937038]]
[[ 1.46210794 -2.06014071 -0.3224172 -0.38405435 1.13376944]]
[[-1.09989127 -0.17242821 -0.87785842 0.04221375 0.58281521]]
[[-1.10061918 1.14472371 0.90159072 0.50249434 0.90085595]]
'''
'''
总结:
1.np.random.seed(参数),该语句的位置指定了一个随机数生成的起始位置。
每个参数对应一个位置,并且在该参数确定后,其后面的额随机数的生成顺序也就确定了。
所以,我们回答了第二个疑问:随机数种子的参数怎么选择?
--我认为随意,这个参数只是确定一下随机数的起始位置。
'''