【发布时间】:2016-11-22 12:41:47
【问题描述】:
我想知道如何在 numpy 中生成与在 MATLAB 中相同的随机(正态分布)数。
作为我在 MATLAB 中执行此操作的示例
RandStream.setGlobalStream(RandStream('mt19937ar','seed',1));
rand
ans =
0.417022004702574
现在我可以用 numpy 重现这个:
import numpy as np
np.random.seed(1)
np.random.rand()
0.417022004702574
这很好,但是当我使用正态分布执行此操作时,我会得到不同的数字。
RandStream.setGlobalStream(RandStream('mt19937ar','seed',1));
randn
ans =
-0.649013765191241
还有 numpy
import numpy as np
np.random.seed(1)
np.random.randn()
1.6243453636632417
这两个函数在他们的文档中都说它们来自标准正态分布,但给我的结果却不同。知道如何调整我的 python/numpy 以获得与 MATLAB 相同的数字。
因为有人将此标记为重复: 正如我在开头和结尾所写的那样,这是关于正态分布的。 正如我写的均匀分布工作正常,这是关于正态分布。 链接线程中的答案都没有帮助正态分布。
【问题讨论】:
-
获得相同正态分布样本的一种可能方法是从均匀分布生成样本,然后将它们转换为正态分布:stackoverflow.com/questions/75677/…
-
另见:stackoverflow.com/questions/3722138/…(它显示在“相关”侧边栏中;不妨将其设为“已链接”。)