在Python中生成与机器无关的随机数。

4

假设在两台不同的计算机上,Python和Numpy版本相同,在给定特定种子的情况下,numpy.random是否会产生相同的随机数?

是否有一些选项在广泛的Python/库版本中独立于计算机?

1个回答

5
是的。来自NumPy文档
兼容性保证:使用相同参数的固定种子和对“RandomState”方法的一系列调用将始终产生相同的结果,直到舍入误差,除非值不正确。不正确的值将被修正,并在相关docstring中注明进行修正的NumPy版本。允许扩展现有参数范围和添加新参数,只要先前的行为保持不变即可。

1
“always”是指“在不同的机器上”还是“在同一台机器上的不同运行中”并不清楚。我对跨机器保证的可行性持怀疑态度:有些算法使用拒绝方法,进行浮点比较以决定何时接受。然后,从随机序列中消耗的值可能取决于平台libm的详细信息。例如,请参见此代码:https://github.com/numpy/numpy/blob/b94c2b01ff7ef5b8dc44726512cfa232e9054882/numpy/random/mtrand/distributions.c#L720-L742。 - Mark Dickinson
1
我开了一个错误报告来澄清这个问题:https://github.com/numpy/numpy/issues/8771 - Mark Dickinson
我特别是指在不同的机器上。我最初提出这个问题是因为在不同的机器上得到了不同的答案,但后来发现我没有调用相同数量的np.random。现在当我这样做时,在两台机器上得到了相同的随机数。如果在某些架构上可能不是这种情况,我会非常感兴趣... - Dan
有人知道这是否也适用于 random.random 吗? - Thomas Kimber
1
@ThomasKimber - https://dev59.com/YWox5IYBdhLWcg3wtmc1 可能会有所帮助。从答案中可以看出,如果您使用相同的整数作为随机数生成器的种子,则跨多台计算机生成的随机数序列将是相同的。 - jkr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接