我想知道是否有可能用 NumPy 精确地重现 MATLAB 的整个 randn()
序列。我用 Python/Numpy 编写了自己的例程,它给我的结果与其他人所做的 MATLAB 代码略有不同,而且由于不同的随机抽取,我很难找出它的来源。
我发现 numpy.random.seed
值在第一次抽奖时产生相同的数字,但从第二次抽奖开始,它就完全不同了。我进行了大约 20,000 次多元正常绘图,所以我不想只保存 matlab 绘图并在 Python 中读取它。
最佳答案
用户询问是否可以重现 Matlab 的 randn() 的输出,而不是 rand。我无法设置算法或种子来重现 randn() 的确切数字,但下面的解决方案对我有用。
在 Matlab 中:按如下方式生成正态分布的随机数:
rng(1);
norminv(rand(1,5),0,1)
ans =
-0.2095 0.5838 -3.6849 -0.5177 -1.0504
在 Python 中:按如下方式生成正态分布的随机数:
import numpy as np
from scipy.stats import norm
np.random.seed(1)
norm.ppf(np.random.rand(1,5))
array([[-0.2095, 0.5838, -3.6849, -0.5177,-1.0504]])
当从 Matlab 移动到 Python 或从 Matlab 移动到 Python 时,拥有可以重现相等随机数的函数非常方便。
关于python - 是否可以使用 NumPy 重现 MATLAB 的 randn()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3722138/