【问题标题】:Is there're a way to seed Swift 4.2 random number generator有没有办法播种 Swift 4.2 随机数生成器
【发布时间】:2019-04-20 06:18:15
【问题描述】:

我喜欢新的 Swift 4.2 RandomNumberGenerator 东西,但我看不到种子的可能性。我是否遗漏了什么,或者有什么办法可以通过调用底层的低级函数来播种这些生成器?我有很多代码,它们在默认数字类型上使用默认数字生成器,我现在需要确保在启动之间一切行为完全相同,代码更改尽可能少。

【问题讨论】:

    标签: ios swift random random-seed swift4.2


    【解决方案1】:

    如果您希望通过显式播种实现可重复性,您可以使用 Mersenne Twister 的 GameplayKit 实现:

    import Cocoa
    import GameplayKit
    
    let mt = GKMersenneTwisterRandomSource.init(seed: 12345)
    
    for _ in (1...5) {
      print(mt.nextUniform())
    }
    

    【讨论】:

      【解决方案2】:

      新架构的整体理念是任何生成器都可以通过采用 RandomNumberGenerator 协议来替代。因此,如果您需要可重复的种子,请使用您自己的随机生成器算法。

      【讨论】:

      • 我认为要问的问题是......如何使用不同的种子来调用随机数生成器?我想答案是 Swift 会为你重新播种。
      猜你喜欢
      • 2019-07-16
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 1970-01-01
      • 2013-09-24
      相关资源
      最近更新 更多