有没有办法让numpy中的随机数生成器生成与Matlab相同的随机数,给定相同的种子?
我在Matlab中尝试了以下内容:
>> rng(1);
>> randn(2, 2)
ans =
0.9794 -0.5484
-0.2656 -0.0963
Run Code Online (Sandbox Code Playgroud)
以及与Numpy的iPython中的以下内容:
In [21]: import numpy as np
In [22]: np.random.seed(1)
In [23]: np.random.randn(2, 2)
Out[23]:
array([[ 1.624, -0.612],
[-0.528, -1.073]])
Run Code Online (Sandbox Code Playgroud)
两个数组中的值都不同.
或者有人建议比较Matlab和Python中使用随机数生成的相同算法的两个实现是个好主意.
谢谢!
我想知道如何在numpy中生成与MATLAB中相同的随机(正态分布)数字.
作为一个例子,我在MATLAB中这样做
RandStream.setGlobalStream(RandStream('mt19937ar','seed',1));
rand
ans =
0.417022004702574
Run Code Online (Sandbox Code Playgroud)
现在我可以用numpy重现这个:
import numpy as np
np.random.seed(1)
np.random.rand()
0.417022004702574
Run Code Online (Sandbox Code Playgroud)
哪个好,但是当我使用正态分布执行此操作时,我会得到不同的数字.
RandStream.setGlobalStream(RandStream('mt19937ar','seed',1));
randn
ans =
-0.649013765191241
Run Code Online (Sandbox Code Playgroud)
和numpy
import numpy as np
np.random.seed(1)
np.random.randn()
1.6243453636632417
Run Code Online (Sandbox Code Playgroud)
两个函数在他们的文档中都说他们从标准的正态分布中得出,但给出了不同的结果.知道如何调整我的python/numpy以获得与MATLAB相同的数字.
因为有人将此标记为重复:这是关于正常分布,正如我在开头和结尾所写的那样.因为我写的统一分布工作正常,这是关于正态分布.链接线程中的所有答案都不能帮助正常分发.