【问题标题】:Deterministic random number generation across systems跨系统的确定性随机数生成
【发布时间】:2013-06-26 11:56:59
【问题描述】:

我需要向分布式应用程序网络发送相同的随机数序列。

由于这样的序列可能很长,我正在考虑只发送一个(随机生成的)集中种子初始化编号和所需序列的长度。

鉴于接收方的每个组件都将使用相同的 .NET 版本,在我的所有节点上生成相同的随机数据是否是一个可行的解决方案?

【问题讨论】:

标签: c# random random-seed


【解决方案1】:

假设您在所有环境中使用相同版本的 .NET,您应该能够为 Random(int seed) 分发种子并重新创建相同的序列。

Remarks on System.Random @ MSDN

调用者须知随机数生成器的实现 随机类不保证在专业中保持不变 .NET 框架的版本。因此,您的应用程序代码 不应假设相同的种子会产生相同的结果 .NET Framework 不同版本中的伪随机序列。

如果您发现框架版本会发生变化,或者在开始使用新版本后可能需要重新创建旧序列,则您需要创建自己的随机实现。

请参阅此问题的答案以获得指针:Crossplatform random number generator

【讨论】:

    【解决方案2】:

    您可以将Random 类与种子一起使用或使用面向服务的架构。

    Random 用种子初始化时会产生相同的序列。

    【讨论】:

    • 对此有一个重要的警告,之前已在 SO 上讨论过。请参阅 drch 的答案。
    猜你喜欢
    • 2018-05-20
    • 2021-02-22
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-20
    相关资源
    最近更新 更多