【问题标题】:Silverlight System.Random sequencing cross platformSilverlight System.随机测序跨平台
【发布时间】:2010-05-25 11:50:00
【问题描述】:

我需要知道不同平台对System.Random 对象(Silverlight)的影响。在 Mac、PC 和 32 / 64 位上创建的序列是否相同?

【问题讨论】:

    标签: silverlight random platform-specific


    【解决方案1】:

    请原谅我的“愚蠢”回答,但在我看来,随机数应始终被视为随机,因此创建的序列应在任何“域”中处理为不相同。我知道 .NET(或 Silverlight)随机数生成器根据种子值使用伪随机算法,并且在使用相同的种子值时会生成相同的数列,但我不会依赖这个事实。

    当您需要跨多个平台同步随机数时,您似乎有某种“期望”,并且对期望值序列使用随机数生成器对我来说看起来很奇怪。

    如果您能告诉我们更多有关您的用例的信息,也许我们可以找到另一个更可靠的解决方案?

    只是我的意见。

    【讨论】:

    • 然而,有时“随机”序列的重复是有用的,在模拟软件中这是一个相当普遍的要求。我认为没有必要怀疑Random 对象对于给定种子的可重复性。这应该可以转移到所有平台。需要注意的是,多个线程可能会从Random 的同一实例中分配数字,在这种情况下,引入了一个额外的随机元素。在这种情况下,即使使用相同的种子,代码也可能会以与先前运行不同的“顺序”来提取随机数。
    • 感谢您的澄清,安东尼。据我了解,当您需要随时重复/同步时,您应该存储/恢复随机项目列表,但我猜它们可能会成为一个巨大的资源消耗,并且有人可能会出于这些原因选择“可重复”随机生成器。
    【解决方案2】:

    生成随机数的算法被编码到运行时。因此,无论平台如何,对于给定的种子值,您都应该看到相同的“随机”数字集。

    Random(其中种子值基于时间)的默认构造函数的确切行为可能因平台而异。例如,Random 实例的快速创建可能会创建一些生成相同序列的实例,这些“重复”的分布可能因包括平台在内的各种条件而异。

    【讨论】:

      猜你喜欢
      • 2019-01-26
      • 1970-01-01
      • 2010-10-29
      • 2013-04-01
      • 2014-02-23
      • 1970-01-01
      • 2015-01-03
      • 2021-02-22
      相关资源
      最近更新 更多