[swift]配列をシャッフルしたい 2015/05/06

swiftです。配列をシャッフルしたいです。

How do I shuffle an array in Swift? - Stack Overflow
swiftでシャッフル関数 - Qiita

 拡張で実装。

 stack overflowの実装をそのままだけど。
もとの配列はこわさずシャッフルしたものを返してくれます。
import Foundation extension Array { func shuffled() -> [T] { var list = self for i in 0..<(list.count - 1) { let j = Int(arc4random_uniform(UInt32(list.count - i))) + i swap(&list[i], &list[j]) } return list } } func rand(r:Int) -> Int { return Int(arc4random_uniform(UInt32(r))); } for var i = 0 ; i < 100 ; i++ { let a = rand(5) print("\(a) ") } println("") let arr1 = ["a","b", "c"] var arr2 = arr1 arr2[1] = "d" println("\(arr1)") println("\(arr2)") var arr3 = arr1.shuffled() println("\(arr3)") println("\(arr1)")

 

: