到目前为止我设计的方法是这样的:
func randRange (lower : Int , upper : Int) -> Int {
let difference = upper - lower
return Int(Float(rand())/Float(RAND_MAX) * Float(difference + 1)) + lower
}
这会生成介于下限和上限(含)之间的随机整数。
这是它的一个更简单的版本:
func randRange (lower: Int , upper: Int) -> Int {
return lower + Int(arc4random_uniform(UInt32(upper - lower + 1)))
}
如果您决定此函数仅适用于无符号值,则可以进一步简化:
func randRange (lower: UInt32 , upper: UInt32) -> UInt32 {
return lower + arc4random_uniform(upper - lower + 1)
}
或者,遵循 Anton(为你+1)使用范围作为参数的绝妙想法:
func random(range: Range<UInt32>) -> UInt32 {
return range.startIndex + arc4random_uniform(range.endIndex - range.startIndex + 1)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)