swiftでArrayを擬似乱数でshuffleする方法は?
SwiftでArrayをShuffleする方法として、以下のようなロジックを見つけました。
extension Array {
mutating func shuffle() {
for i in 0..<(count - 1) {
let j = Int(arc4random_uniform(UInt32(count - i))) + i
swap(&self[i], &self[j])
}
}
}
例えば日付をSeedにして、ランダムを発生させたい場合にはどのようにしたら良さそうでしょうか?
mutating func sshuffle(seed: Int)
想定しているのは、こんな感じでseedとしてIntをとって、それに合わせて(擬似乱数で)shuffleする方法です。
※追記
以下のようなロジックを作ってみましたが、いかがでしょうか?
mutating func sshuffle(seed: Int) {
srand(UInt32(seed))
let r = rand()
for i in 0..<(count - 1) {
let j = Int(r % Int32(count - i)) + i
swap(&self[i], &self[j])
}
}