【发布时间】:2019-03-02 23:23:10
【问题描述】:
我遇到了一个问题,我有一个测试用例失败,这取决于我从 Int.random(:in) 方法调用中获得的随机数。
我环顾四周,找不到进行相同调用但能够向生成器提供您自己的种子的好方法。
有谁知道这样做的好方法吗?
【问题讨论】:
-
您能否提供更多详细信息?比如你的测试是如何组织的,也许可以发布一些代码?
标签: swift
我遇到了一个问题,我有一个测试用例失败,这取决于我从 Int.random(:in) 方法调用中获得的随机数。
我环顾四周,找不到进行相同调用但能够向生成器提供您自己的种子的好方法。
有谁知道这样做的好方法吗?
【问题讨论】:
标签: swift
见https://developer.apple.com/documentation/swift/systemrandomnumbergenerator
SystemRandomNumberGenerator 会自动播种。如果你想使用自己的种子 RNG,你必须自己实现一个,符合 RandomNumberGenerator 协议。
【讨论】:
我了解您需要使用 SystemRandomNumberGenerator 的种子整数中的随机整数。
种子项目是 11、22、33、44、55、66、77、88 或其他。 你实现:
let seed:[Int] = [11, 22, 33, 44, 55, 66, 77, 88]
然后调用func随机返回Int。
if seed.count > 0 {
let number = Utils.random(from: seed)
}
随机函数:
class Utils: NSObject {
class func random(from:[Int]) -> Int {
let inline = (0..<from.count)
var g = SystemRandomNumberGenerator()
let i = Int.random(in: inline, using: &g)
return from[i]
}
}
希望,我现在认识你!
【讨论】: