create array of random numbers in swift

前端 未结 5 2094
面向向阳花
面向向阳花 2021-02-14 19:19

I\'m just starting to learn swift. I\'m attempting to create an array of several random numbers, and eventually sort the array. I\'m able to create an array of one random number

5条回答
  •  一整个雨季
    2021-02-14 20:14

    In Swift 4.2 there is a new static method for fixed width integers that makes the syntax more user friendly:

    func makeList(_ n: Int) -> [Int] {
        return (0..

    Edit/update: Swift 5.1 or later

    We can also extend Range and ClosedRange and create a method to return n random elements:

    extension RangeExpression where Bound: FixedWidthInteger {
        func randomElements(_ n: Int) -> [Bound] {
            precondition(n > 0)
            switch self {
            case let range as Range: return (0..: return (0..

    extension Range where Bound: FixedWidthInteger {
        var randomElement: Bound { .random(in: self) }
    }
    

    extension ClosedRange where Bound: FixedWidthInteger {
        var randomElement: Bound { .random(in: self) }
    }
    

    Usage:

    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
    

    Note: for Swift 3, 4 and 4.1 and earlier click here.

提交回复
热议问题