有没有一种方法可以为Swift 4.2的随机数生成器提供种子?

5
我喜欢新的Swift 4.2 RandomNumberGenerator,但我没有看到种子的可能性。我是遗漏了什么,还是有任何方法可以为这些生成器提供种子,通过调用底层低级函数?我有很多代码使用默认数字类型上的默认数字生成器,现在我需要确保每次启动时一切都完全相同,并尽可能少地更改代码。
2个回答

6

如果您想通过显式种子实现重现性,可以使用Mersenne Twister的GameplayKit实现:

import Cocoa
import GameplayKit

let mt = GKMersenneTwisterRandomSource.init(seed: 12345)

for _ in (1...5) {
  print(mt.nextUniform())
}

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

我认为所问的问题是...如何为调用随机数生成器使用不同的种子? 我猜答案是Swift会为您重新进行播种。 - Andrew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接