相关疑难解决方法(0)

比较使用随机数生成的Matlab和Numpy代码

有没有办法让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中使用随机数生成的相同算法的两个实现是个好主意.

谢谢!

python random matlab

6
推荐指数
2
解决办法
3294
查看次数

在numpy中实现与matlab相同的随机数

我想知道如何在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相同的数字.

因为有人将此标记为重复:这是关于正常分布,正如我在开头和结尾所写的那样.因为我写的统一分布工作正常,这是关于正态分布.链接线程中的所有答案都不能帮助正常分发.

matlab numpy

5
推荐指数
1
解决办法
587
查看次数

标签 统计

matlab ×2

numpy ×1

python ×1

random ×1