Create an array of random numbers in Swift Create an array of random numbers in Swift arrays arrays

Create an array of random numbers in Swift


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..<n).map { _ in .random(in: 1...20) }}

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<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) }}

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.


Ok, this is copy/paste of a question asked elsewhere, but I think I'll try to remember that one-liner:

var randomArray = map(1...100){_ in arc4random()}

(I love it!)

If you need a random number with an upperBound (exclusive), use arc4random_uniform(upperBound).

E.g.: random number between 0 and 99: arc4random_uniform(100)

Swift 2 update

var randomArray = (1...100).map{_ in arc4random()}


Swift 5

This creates an array of size 5, and whose elements range from 1 to 10 inclusive.

let arr = (1...5).map( {_ in Int.random(in: 1...10)} )