您的位置:首页 > 其它

nump中的为随机数产生器的seed():np.random.RandomState

2017-09-08 09:44 435 查看
笔记:

nump.random.RandomState(0)为随机数产生器的种子,里面的数字相同,则产生的随机数相同。

rng = numpy.random.RandomState(23355)
arrayA = rng.uniform(0,1,(2,3))


该段代码的目的是产生一个2行3列的assarray,其中的每个元素都是[0,1]区间的均匀分布的随机数

这里看以看到,有一个23355这个数字,其实,它是伪随机数产生器的种子,也就是“the starting point for a sequence of pseudorandom number”

对于某一个伪随机数发生器,只要该种子(seed)相同,产生的随机数序列就是相同的

# 仍以上面的seed为例,但执行多次
# 利用循环,执行4次
import numpy
for i in [1,2,3,4]:
rng = numpy.random.RandomState(23455)
arrayA = rng.uniform(0,1,(2,3))
print arrayA


结果相同

import numpy
2 for i in [1,2,3,4]:
3     rng = numpy.random.RandomState(23455+i)
4     arrayA = rng.uniform(0,1,(2,3))
5     print ('i = %s' % (i))
6     print (arrayA)


结果就不同了。

转自:http://www.cnblogs.com/lutingting/p/5185408.html

更多的参考:http://www.cnblogs.com/strongYaYa/p/5864014.html

补充:

1 numpy.random.seed()用于设置随机数种子

seed可以是一个int,满足0<=seed<=2(32−1),这个条件的int都可以做参数。 seed可以是一个array。 seed可以是None。

用一句话总结numpy.random.seed()和numpy.random.RandomState()的关系:

相同处: 他们的参数都是随机数seed 不同处: numpy.random.RandomState()更为复杂,完全可以代替numpy.random.seed()这条语句。 随机数种子seed只有一次有效,在下一次调用产生随机数函数前没有设置seed,则还是产生随机数。

1.如果需要不产生随机数,则需要每次设置numpy.random.seed()。

num=0

while(num<5):
np.random.seed(1)
print(np.random.random())
num+=1

0.417022004702574
0.417022004702574
0.417022004702574
0.417022004702574
0.417022004702574


2.如果需要每次都产生随机数,则可以将随机数seed设置成None,或者不设置。

2 numpy.random.RandomState()设置seed同时产生随机数

>>> import numpy
>>>> numpy.random.RandomState(0).rand(4)
>array([ 0.5488135 , 0.71518937, 0.60276338, 0.54488318])
>>> numpy.random.RandomState(0).rand(4)
array([ 0.5488135 , 0.71518937, 0.60276338, 0.54488318])
>>> numpy.random.RandomState(0).rand(4)
array([ 0.5488135 , 0.71518937, 0.60276338, 0.54488318])
>>> numpy.random.RandomState(None).rand(4)
array([ 0.5488135 , 0.71518937, 0.60276338, 0.54488318])
>>> numpy.random.RandomState(None).rand(4)
array([ 0.4236548 , 0.64589411, 0.43758721, 0.891773 ])
>>> numpy.random.RandomState(None).rand(4)
array([ 0.96366276, 0.38344152, 0.79172504, 0.52889492])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: