【发布时间】:2019-04-20 06:18:15
【问题描述】:
我喜欢新的 Swift 4.2 RandomNumberGenerator 东西,但我看不到种子的可能性。我是否遗漏了什么,或者有什么办法可以通过调用底层的低级函数来播种这些生成器?我有很多代码,它们在默认数字类型上使用默认数字生成器,我现在需要确保在启动之间一切行为完全相同,代码更改尽可能少。
【问题讨论】:
标签: ios swift random random-seed swift4.2
我喜欢新的 Swift 4.2 RandomNumberGenerator 东西,但我看不到种子的可能性。我是否遗漏了什么,或者有什么办法可以通过调用底层的低级函数来播种这些生成器?我有很多代码,它们在默认数字类型上使用默认数字生成器,我现在需要确保在启动之间一切行为完全相同,代码更改尽可能少。
【问题讨论】:
标签: ios swift random random-seed swift4.2
如果您希望通过显式播种实现可重复性,您可以使用 Mersenne Twister 的 GameplayKit 实现:
import Cocoa
import GameplayKit
let mt = GKMersenneTwisterRandomSource.init(seed: 12345)
for _ in (1...5) {
print(mt.nextUniform())
}
【讨论】:
新架构的整体理念是任何生成器都可以通过采用 RandomNumberGenerator 协议来替代。因此,如果您需要可重复的种子,请使用您自己的随机生成器算法。
【讨论】: