我对 Swift 很陌生,想创建一个返回随机整数数组的函数,所有整数都在指定范围内。这是我想出的,但对我来说感觉不是很“swift ”。精通 Swift 的人会采取不同的方法吗?
func randomNumber(range: ClosedRange<Int>) -> Int {
let min = range.lowerBound
let max = range.upperBound
return Int(arc4random_uniform(UInt32(1 + max - min))) + min
}
func randomNumbers(range: ClosedRange<Int>, count: Int) -> [Int] {
var array = [Int]()
for _ in 0..<count {
let n = randomNumber(range: range)
array.append(n)
}
return array
}
let nums = randomNumbers(range: 10...20, count: 5)
最佳答案
函数randomNumber()
昂贵效率不高,因为min
和max
在每次调用中都被提取(又名在循环的每次迭代中)
这可能会更快一些
func randomNumbers(range: ClosedRange<Int>, count: Int) -> [Int] {
let min = range.lowerBound
let randomMax = UInt32(1 + range.upperBound - min)
return (0..<count).map {_ in return Int(arc4random_uniform(randomMax)) + min }
}
let nums = randomNumbers(range: 10...20, count: 5)
关于arrays - 返回一个范围内的整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42517449/