ios - IOS - 在swift中,创建随机数数组

74 4

我只是开始学习swift ,我试图创建一个随机数数组,最后对数组进行排序,我能够创建一个随机数的数组,但是最好的方法是迭代它来创建一个随机数的数组?


func makeList() {


 var randomNums = arc4random_uniform(20) + 1



 let numList = Array(arrayLiteral: randomNums)



}



makeList()



任何帮助,不胜感激。

时间: 原作者:

54 2

编辑/更新:Swift 4.2或更高版本

在Swift 4.2中,对于固定宽度整数有一个新的静态方法,使语法更友好:


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


 return (0..<n).map{ _ in Int.random(in: 1...20) }


}



我们还可以扩展RangeClosedRange,并创建一个方法来返回n随机元素:


extension Range where Bound: FixedWidthInteger {


 func randomElements(_ n: Int) -> [Bound] {


 guard n > 0 else { return [] }


 return (0..<n).map { _ in Bound.random(in: self) }


 }


 var randomElement: Bound { return Bound.random(in: self) }


}




extension ClosedRange where Bound: FixedWidthInteger {


 func randomElements(_ n: Int) -> [Bound] {


 guard n > 0 else { return [] }


 return (0..<n).map { _ in Bound.random(in: self) }


 }


 var randomElement: Bound { return 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



原作者:
108 0


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



(我喜欢)!

编辑

如果你需要一个带有upperBound(独占)的随机数,请使用arc4random_uniform(upperBound),

Swift 2update


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



原作者:
138 3

Swift 4.2或更高版本


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


 return (0..<n).map{ _ in Int.random(in: 1 ... 20) }


}



let list = makeList(5) //[11, 17, 20, 8, 3]


list.sorted() // [3, 8, 11, 17, 20]



原作者:
...