1. 程式人生 > >產生不重複數字的隨機數生成器

產生不重複數字的隨機數生成器

在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()?) } }