【问题标题】:How to seed the Int.random method call in Swift?如何在 Swift 中播种 Int.random 方法调用?
【发布时间】:2019-03-02 23:23:10
【问题描述】:

我遇到了一个问题,我有一个测试用例失败,这取决于我从 Int.random(:in) 方法调用中获得的随机数。

我环顾四周,找不到进行相同调用但能够向生成器提供您自己的种子的好方法。

有谁知道这样做的好方法吗?

【问题讨论】:

  • 您能否提供更多详细信息?比如你的测试是如何组织的,也许可以发布一些代码?

标签: swift


【解决方案1】:

https://developer.apple.com/documentation/swift/systemrandomnumbergenerator

SystemRandomNumberGenerator 会自动播种。如果你想使用自己的种子 RNG,你必须自己实现一个,符合 RandomNumberGenerator 协议。

【讨论】:

  • 谢谢,这有助于回答我的问题!
【解决方案2】:

我了解您需要使用 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]
    }
}

希望,我现在认识你!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 2020-07-27
    • 2012-03-22
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    相关资源
    最近更新 更多