Obtenez de l'aléatoire des éléments de la matrice en swift

J'ai un tableau comme:

var names: String = [ "Peter", "Steve", "Max", "Sandra", "Roman", "Julia" ]

J'aimerais avoir 3 éléments aléatoires à partir de ce tableau. Je suis venue à partir de C#, mais en swift je ne suis pas sûr où commencer. Je pense que je devrais aléatoire de la matrice d'abord et ensuite choisir les 3 premiers éléments, par exemple?

J'ai essayé de mélanger avec l'extension suivante:

extension Array
{
    mutating func shuffle()
    {
        for _ in 0..<10
        {
            sort { (_,_) in arc4random() < arc4random() }
        }
    }
}

mais il dit ensuite: "'() "n'est pas convertible à" [Int]'" au lieu de "shuffle()".

De sélection d'un certain nombre d'éléments que j'utilise:

var randomPicks = names[0..<4];

qui semble bon jusqu'ici.

Comment shuffle? Ou quelqu'un a une meilleure/plus élégante solution pour cela?

Voir stackoverflow.com/questions/24026510/... pour une meilleure lecture aléatoire de la méthode.
Merci, j'ai utilisé la mutation de la méthode d'extension de la accepté anaswer maintenant pour le battage.
Oui, il y a de mieux/plus élégant solutions: plein de brassage n'est pas optimale si vous avez besoin de 4 éléments aléatoires de 10, ramasser les un par un en coûte seulement 4 arc4random_uniform, mais plein de brassage des coûts 9 arc4random_uniform.
À l'aide de sort à battre comme cela ne fonctionne tout simplement pas. Tri intentionnellement n'a que peu de comparaison possible, et certainement pas assez pour atteindre un décent shuffle.

OriginalL'auteur Patric | 2014-12-02