swiftでArrayを擬似乱数でshuffleする方法は？


SwiftでArrayをShuffleする方法として、以下のようなロジックを見つけました。

[code]

    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])
            }
        }
    }
    
[/code]

例えば日付をSeedにして、ランダムを発生させたい場合にはどのようにしたら良さそうでしょうか？

[code]

    mutating func sshuffle(seed: Int)
    
[/code]

想定しているのは、こんな感じでseedとしてIntをとって、それに合わせて（擬似乱数で）shuffleする方法です。

**※追記**  
以下のようなロジックを作ってみましたが、いかがでしょうか？

[code]

    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])
        }
    }
    
[/code]




`import Foundation`（`import
UIKit`でもおなじ）をすると、C言語の標準ライブラリに含まれる関数がすべてSwiftで使えるようになります。`srand()`も`rand()`もそのまま使えます。

（`arc4random_uniform()`も、`import Foundation`が必要だと思いますが……）

「※追記」に対して：

「いかがでしょうか？」とは、プログラムを評価してくださいという意味ですか？  
arc4Random()、arc4Random_uniform()は、C言語標準ライブラリの、rand()関数より、一様性で高い品質を提供するものとして作られたものです。それ（ら）を採用せず、rand()関数を使う時点で、評価は低くならざるをえません。

