【问题标题】:Generating machine-independent random numbers in python在python中生成与机器无关的随机数
【发布时间】:2017-03-10 20:59:27
【问题描述】:

假设 python 和 numpy 的版本在两台机器上相同,numpy.random 是否会在不同的架构上产生相同的随机数(给定特定的种子)?

在各种 python/库版本中是否有任何与机器无关的好选择?

【问题讨论】:

    标签: python numpy random


    【解决方案1】:

    是的。来自NumPy docs

    兼容性保证一个固定的种子和一系列固定的调用 使用相同参数的“RandomState”方法总是会产生 舍入误差的结果相同,除非值是 不正确。不正确的值将被修复,NumPy 版本在 所做的修复将在相关文档字符串中注明。 扩展现有参数范围并添加新参数 只要之前的行为保持不变,就允许使用参数。

    【讨论】:

    • 不清楚“总是”是指“在不同的机器上”还是“在同一台机器上的不同运行”。我怀疑这样的保证是否可能跨机器:一些算法使用拒绝方法,进行浮点比较来决定何时接受。然后,从随机序列中消耗的值的数量可以取决于平台 libm 详细信息。例如,请参阅此代码:github.com/numpy/numpy/blob/….
    • 我打开了一个错误报告来澄清这一点:github.com/numpy/numpy/issues/8771
    • 我的意思是跨不同的机器。我最初问是因为我在不同的机器上得到了不同的答案,但我意识到我没有调用 np.random 相同的次数。当我现在这样做时,我确实在两台机器上得到了相同的随机数。如果在某些架构上可能不是这种情况,我会非常感兴趣......
    • 有人知道这是否也适用于random.random
    • @ThomasKimber - stackoverflow.com/questions/9023660/… 可能会有所帮助。从答案看来,如果你用相同的整数为随机数生成器播种,随机数的序列在机器之间将是相同的。
    猜你喜欢
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 2014-05-21
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多