在Swift中生成一个随机数

6 random swift

我在https://www.hackingwithswift.com/read/35/2/generating-random-numbers-in-ios-8-and-earlier中读到,生成随机数的最佳方法是使用

    let r = arc4random_uniform(UInt32(_names.count))
    let name : String = _names[Int(r)]
Run Code Online (Sandbox Code Playgroud)

但似乎很奇怪,我必须投两次才能得到一个随机数,我该怎么办才能避免施法?

tkt*_*ota 7

这实际上取决于你想要避免多少铸造.你可以简单地将它包装在一个函数中:

func random(max maxNumber: Int) -> Int {
    return Int(arc4random_uniform(UInt32(maxNumber)))
}
Run Code Online (Sandbox Code Playgroud)

那么你只需要做一次难看的铸造.无处不在你需要一个最大数字的随机数:

let r = random(max: _names.count)
let name: String = _names[r]
Run Code Online (Sandbox Code Playgroud)

作为旁注,由于这是Swift,您的属性不需要_在它们面前.