我才刚刚开始学习 Swift。
我正在尝试创建一个包含多个随机数的数组,并最终对数组进行排序。我能够创建一个由一个随机数组成的数组,但是迭代它以创建一个由多个随机数组成的数组的最佳方法是什么?
func makeList() {
var randomNums = arc4random_uniform(20) + 1
let numList = Array(arrayLiteral: randomNums)
}
makeList()
最佳答案
在 Swift 4.2 中有一个新的固定宽度整数的静态方法,使语法更加用户友好:
func makeList(_ n: Int) -> [Int] {
return (0..<n).map { _ in .random(in: 1...20) }
}
编辑/更新:Swift 5.1 或更高版本
我们还可以扩展 Range
和 ClosedRange
并创建一个方法来返回 n
个随机元素:
extension RangeExpression where Bound: FixedWidthInteger {
func randomElements(_ n: Int) -> [Bound] {
precondition(n > 0)
switch self {
case let range as Range<Bound>: return (0..<n).map { _ in .random(in: range) }
case let range as ClosedRange<Bound>: return (0..<n).map { _ in .random(in: range) }
default: return []
}
}
}
extension Range where Bound: FixedWidthInteger {
var randomElement: Bound { .random(in: self) }
}
extension ClosedRange where Bound: FixedWidthInteger {
var randomElement: Bound { .random(in: self) }
}
用法:
let randomElements = (1...20).randomElements(5) // [17, 16, 2, 15, 12]
randomElements.sorted() // [2, 12, 15, 16, 17]
let randomElement = (1...20).randomElement // 4 (note that the computed property returns a non-optional instead of the default method which returns an optional)
let randomElements = (0..<2).randomElements(5) // [1, 0, 1, 1, 1]
let randomElement = (0..<2).randomElement // 0
注意:对于 Swift 3、4 和 4.1 及更早版本,请单击 here .
关于ios - 在 Swift 中创建一个随机数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28140145/