ios - 在 Swift 中创建一个随机数数组

标签 ios arrays swift arc4random

我才刚刚开始学习 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 或更高版本

我们还可以扩展 RangeClosedRange 并创建一个方法来返回 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/

相关文章:

c - C语言数组计算时如何打印带符号的结果

javascript - 转换 JavaScript 对象

ios - 如何让WKWebView中的文字垂直居中?

ios - 是否可以更改状态栏文本颜色?

ios - 在后台线程 ios 上调用函数 - 嵌套函数调用会发生什么

ios - 检查类的特定实例是否已经存在

ios - 如何仅针对 UITabbarController 禁用 UI 导航向上滑动手势?

python - 如何实现逻辑和数组长度?

iOS - 如何在 swift 中使用 `NSMutableString`

ios - 如何编写异步接收nsnotification的单元测试?