np.random.seed() 理解

在使用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(参数),该语句的位置指定了一个随机数生成的起始位置。
  每个参数对应一个位置,并且在该参数确定后,其后面的额随机数的生成顺序也就确定了。

所以,我们回答了第二个疑问:随机数种子的参数怎么选择?
--我认为随意,这个参数只是确定一下随机数的起始位置。
'''

 

你可能感兴趣的:(python)