【发布时间】:2013-08-31 10:17:17
【问题描述】:
在给定相同种子的情况下,有什么方法可以让 numpy 中的随机数生成器生成与 Matlab 中相同的随机数?
我在 Matlab 中尝试了以下操作:
>> rng(1);
>> randn(2, 2)
ans =
0.9794 -0.5484
-0.2656 -0.0963
在带有 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]])
两个数组中的值不同。
或者有人可以建议一个好主意,比较使用随机数生成的 Matlab 和 Python 中相同算法的两个实现。
谢谢!
【问题讨论】:
-
您可以尝试使用 MATLAB 的
twister而不是默认生成器,并使用 python 的内置random.random()。但是,我怀疑您能否重现完全相同的结果。我会说你不应该依赖相同的随机数。对于一个好的随机算法,唯一重要的是这些数字是否足够随机,我假设 MATLAB 和 numpy 实现都足够好。如果您只是想创建随机输入进行测试,那么只需将它们保存到文件中并在 MATLAB 和 python 中加载文件。