Shuffle
Fisher–Yates shuffle
func shuffle<T>(arr:[T]) ->[T]
{
var array:[T] = arr
var m = array.count
var t :T
var i = 0
while (m > 0) {
m -= 1
i = Int(arc4random_uniform(UInt32(m)))
t = array[m]
array[m] = array[i]
array[i] = t
}
return array
}
with gameplaykit
then NSArray has extended func .shuffled()
import GameplaKit
(array as NSArray).shuffled()
or with GKRandomSource
import GameplayKit
var arr = [1,2,3,4,5,6,7]
let source = GKRandomSource.sharedRandom()
source.arrayByShufflingObjects(in: arr) // [3, 7, 5, 1, 4, 2, 6]
with seed
import GameplayKit
var arr = [1,2,3,4,5,6,7]
let source = GKLinearCongruentialRandomSource()
source.seed = 12345
source.arrayByShufflingObjects(in: resultsArray)