numpy随机不使用种子

Moh*_*hit 0 python numpy

import random
seed = random.random()
random_seed  = random.Random(seed)
random_vec = [ random_seed.random() for i in range(10)]
Run Code Online (Sandbox Code Playgroud)

以上基本上是:

np.random.randn(10)
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何设置种子?

aba*_*ert 5

我不确定你为什么设置种子 - 尤其是随机数,尤其是随机浮点数(注意需要random.seed一个大整数).

但如果你这样做,那很简单:调用numpy.random.seed函数.

请注意,NumPy的种子是32位整数的数组,而Python的种子是单个任意大小的整数(尽管请参阅文档,了解传递其他类型时会发生什么).

所以,例如:

In [1]: np.random.seed(0)    
In [2]: s = np.random.randn(10)
In [3]: s
Out[3]:
array([ 1.76405235,  0.40015721,  0.97873798,  2.2408932 ,  1.86755799,
       -0.97727788,  0.95008842, -0.15135721, -0.10321885,  0.4105985 ])
In [4]: np.random.seed(0)
In [5]: s = np.random.randn(10)
In [6]: s
Out[6]:
array([ 1.76405235,  0.40015721,  0.97873798,  2.2408932 ,  1.86755799,
       -0.97727788,  0.95008842, -0.15135721, -0.10321885,  0.4105985 ])
Run Code Online (Sandbox Code Playgroud)

相同的种子使用了两次(我采用了传递单个的快捷方式int,NumPy将在内部转换为1的数组int32),生成相同的随机数.