Python 比较使用随机排列的Numpy和Matlab代码

Python 比较使用随机排列的Numpy和Matlab代码,python,matlab,random,numpy,permutation,Python,Matlab,Random,Numpy,Permutation,由于随机数状态,我在比较两个代码的输出时遇到问题 我将MATLABrandperm函数与等价的numpy.random.permutation函数的输出进行比较,但是,即使我使用MATLABrand('twister',0)和pythonnumpy.random.seed(0)将种子设置为相同的值,我也会获得不同的置换 我不得不说,如果种子设置如上所述,MATLAB的rand和numpynumpy.random.rand的结果是相同的。这是一个常见问题。虽然随机数生成器相同,但将随机数流转换为随

由于随机数状态,我在比较两个代码的输出时遇到问题

我将MATLAB
randperm
函数与等价的
numpy.random.permutation
函数的输出进行比较,但是,即使我使用MATLAB
rand('twister',0)
和python
numpy.random.seed(0)
将种子设置为相同的值,我也会获得不同的置换


我不得不说,如果种子设置如上所述,MATLAB的
rand
和numpy
numpy.random.rand
的结果是相同的。

这是一个常见问题。虽然随机数生成器相同,但将随机数流转换为随机排列的函数不同。没有描述预期结果的指定标准算法


要解决此问题,您必须在两种工具中使用相同的库。

它们可能使用不同的随机数生成算法。在这种情况下,即使种子相同,输出也会不同。如果只需要与代码进行比较,可以使用Matlab或Python输出足够数量的随机排列,并将它们保存到文件中。然后另一个版本可以从文件中读取值。这可能是最简单的解决方法。一些建议如何做到这一点?有很多可能性。我不知道你打算做什么,所以我不能给你推荐。我想到了一些想法:1)从相关的matlab函数生成一个dll,从python调用它2)从m函数创建一个独立的exe,从python调用它3)通过com或类似的自动化调用m函数4)使用system shell调用matlab中的python代码5)使用matlab中的
org.python.util.PythonInterpreter
访问python。只需在python和matlab中以完全相同的方式实现您自己的排列算法,当然,你可以在网上找到一些食谱。