python -- numpy.random.seed()
在使用numpy时 ,有时需要用到随机数,并且想让生成的随机数在每次运行时都能得到相同的数组,这时可以使用random.seed(int i)函数,设置随机数种子。
下面用几个测试demo,感受下效果~
(1)测试demo1
import pandas as pd import numpy as np np.random.seed(0) sample = pd.DataFrame(np.random.randn(4, 5), columns = list("abcde")) print(sample)
运行结果
a b c d e 0 1.764052 0.400157 0.978738 2.240893 1.867558 1 -0.977278 0.950088 -0.151357 -0.103219 0.410599 2 0.144044 1.454274 0.761038 0.121675 0.443863 3 0.333674 1.494079 -0.205158 0.313068 -0.854096
(2)测试demo2
import pandas as pd import numpy as np np.random.seed(0) sample = pd.DataFrame(np.random.randn(4, 5), columns = list("abcde")) print(sample) np.random.seed(1) #seed(0)修改成seed(1) sample2 = pd.DataFrame(np.random.randn(4, 5), columns = list("abcde")) print(sample2) np.random.seed(0) #依然用seed(0) sample3 = pd.DataFrame(np.random.randn(4, 5), columns = list("abcde")) print(sample3)
运行结果
a b c d e 0 1.764052 0.400157 0.978738 2.240893 1.867558 1 -0.977278 0.950088 -0.151357 -0.103219 0.410599 2 0.144044 1.454274 0.761038 0.121675 0.443863 3 0.333674 1.494079 -0.205158 0.313068 -0.854096 a b c d e 0 1.624345 -0.611756 -0.528172 -1.072969 0.865408 1 -2.301539 1.744812 -0.761207 0.319039 -0.249370 2 1.462108 -2.060141 -0.322417 -0.384054 1.133769 3 -1.099891 -0.172428 -0.877858 0.042214 0.582815 a b c d e 0 1.764052 0.400157 0.978738 2.240893 1.867558 1 -0.977278 0.950088 -0.151357 -0.103219 0.410599 2 0.144044 1.454274 0.761038 0.121675 0.443863 3 0.333674 1.494079 -0.205158 0.313068 -0.854096
观察运行结果:第一组输出的随机数与第三组相同,第二组将seed(0)修改为seed(1)后,随机数有变化。
(3)测试demo3,seed()不带任何参数
import pandas as pd import numpy as np np.random.seed() sample = pd.DataFrame(np.random.randn(4, 5), columns = list("abcde")) print(sample) np.random.seed() sample2 = pd.DataFrame(np.random.randn(4, 5), columns = list("abcde")) print(sample2) np.random.seed() sample3 = pd.DataFrame(np.random.randn(4, 5), columns = list("abcde")) print(sample3)
运行结果
a b c d e 0 1.094043 -0.931689 -0.532350 -0.237909 -0.230972 1 -0.798923 -2.168856 -0.223408 -2.024618 -1.037132 2 -2.146633 0.018349 -0.561558 -0.240381 -0.680097 3 -0.437220 -1.044515 0.186219 -0.832676 -0.352089 a b c d e 0 -0.261296 1.293606 -0.722539 -0.261261 0.406370 1 -0.833043 -0.468739 0.709612 -0.711061 -0.281835 2 -0.871825 -1.707190 1.514178 -0.592277 0.242300 3 -0.067427 -1.750746 0.360844 0.817316 2.208352 a b c d e 0 0.183235 -0.221108 -0.137784 1.144260 1.228376 1 -0.393548 -0.620299 0.366166 -1.265649 -0.799490 2 -0.783431 0.854187 -0.550616 -0.817013 0.278221 3 0.199510 -0.830017 0.714336 1.185360 0.193153
观察运行结果,每组产生的随机数都不同。
结合以上demo测试结果,对random.seed(int i)的用法小结如下:
1) 如果使用相同的i值,每次生成的随机数都相同。 2) 如果不设置参数i,系统将根据时间自动选择i值,生成的随机数是存在差异的。
此篇到此结束~