【问题标题】:Random numbers across different programming languages跨不同编程语言的随机数
【发布时间】:2018-06-08 23:25:59
【问题描述】:

如果我在不同的编程语言中使用随机数生成器函数并且我选择了相同的种子.. 他们必须给我相同的随机数吗?

例如,我使用 Java 和 Perl ...给出了不同的数字。

【问题讨论】:

    标签: random


    【解决方案1】:

    跨语言的可移植性是使用您自己的随机数生成器的原因之一。 This article 提供了一个非常小的随机数生成器,其算法已经过专家的审查。您可以轻松地将生成器移植到任何支持对 32 位无符号整数进行基本操作的语言。给定相同的种子,每个实现都应返回相同的输出序列。

    【讨论】:

      【解决方案2】:

      不,除非两种语言碰巧使用相同的算法。

      【讨论】:

      • 我认为即使是同一种语言的不同实现也可能产生不同的结果。
      • @S.C.:取决于语言及其规范。
      • ..或相同的操作系统 API 调用。
      • @T.E.D.:除非操作系统改变了它的算法,或者你切换到不同的操作系统。
      【解决方案3】:

      只是想补充一下,计算机科学中没有“随机”这样的东西。

      随机数的生成取决于用于生成数字的数学函数。 例如,Java 使用“线性同余生成器”。

      如果两种编程语言使用完全相同的函数,理论上它们应该给出相同的“随机”数。

      如果您对如何生成随机数更感兴趣,可以阅读 Donald Knuth 的《计算机编程艺术》一书。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多