有没有办法播种 Swift 4.2 随机数生成器
Is there're a way to seed Swift 4.2 random number generator
我喜欢新的 Swift 4.2 RandomNumberGenerator 东西,但我看不到那里有种子的可能性。我是否遗漏了什么,或者是否有任何方法可以通过调用底层的低级函数来播种这些生成器?我有很多代码,它们在默认数字类型上使用默认数字生成器,我现在需要确保在两次启动之间一切行为完全相同,代码更改尽可能少。
新架构的整体思路是,只要采用RandomNumberGenerator协议,任何生成器都可以被替换。因此,如果您需要可重复的种子,请使用您自己的随机生成器算法。
如果您希望通过显式播种实现可重复性,您可以使用 GameplayKit
梅森旋转器的实现:
import Cocoa
import GameplayKit
let mt = GKMersenneTwisterRandomSource.init(seed: 12345)
for _ in (1...5) {
print(mt.nextUniform())
}
我喜欢新的 Swift 4.2 RandomNumberGenerator 东西,但我看不到那里有种子的可能性。我是否遗漏了什么,或者是否有任何方法可以通过调用底层的低级函数来播种这些生成器?我有很多代码,它们在默认数字类型上使用默认数字生成器,我现在需要确保在两次启动之间一切行为完全相同,代码更改尽可能少。
新架构的整体思路是,只要采用RandomNumberGenerator协议,任何生成器都可以被替换。因此,如果您需要可重复的种子,请使用您自己的随机生成器算法。
如果您希望通过显式播种实现可重复性,您可以使用 GameplayKit
梅森旋转器的实现:
import Cocoa
import GameplayKit
let mt = GKMersenneTwisterRandomSource.init(seed: 12345)
for _ in (1...5) {
print(mt.nextUniform())
}