產生不重複數字的隨機數生成器
阿新 • • 發佈:2019-01-21
在Swift中,可以使用函式型別的引數,也可以使用函式型別的返回值。而作為返回值的函式,還能“捕獲”外部的值,並多次使用它。這個特性,常可用來建立各種生成器。
下面通過建立一個“隨機數生成器函式”作為演示:
在指定範圍內生成隨機數,同時每次生成的隨機數都不重複。
//隨機數生成器函式
func createRandomMan(start: Int, end: Int) ->() ->Int! {
//根據引數初始化可選值陣列
var nums = [Int]();
for i in start...end{
nums.append(i)
}
func randomMan() -> Int! {
if !nums.isEmpty {
//隨機返回一個數,同時從數組裡刪除
let index = Int(arc4random_uniform(UInt32(nums.count)))
return nums.removeAtIndex(index)
}
else {
//所有值都隨機完則返回nil
return nil
}
}
return randomMan
}
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//使用
let random1 = createRandomMan(1,end: 100)
print(random1())
print(random1())
print(random1())
let random2 = createRandomMan(2,end: 5)
print (random2())
print(random2())
print(random2())
print(random2())
print(random2())
// print(random2()?)
}
}