         // Implementation of Fisher-Yates shuffle
         // http://en.wikipedia.org/wiki/Fisher-Yates_Shuffle
         for index in 0..<array.count {
-            var randIndex = Int(arc4random_uniform(UInt32(index)))
+            var randIndex = self.random(index)
             
             // We use in-out parameters to swap the internals of the array
             Swift.swap(&newArr[index], &newArr[randIndex])

        return array.filter { !self.contains(values, value: $0) }
    }
    
    /// Creates an array of numbers (positive and/or negative) progressing from start up to but not including end.
    ///
    /// :param endVal End value of range.

    /// :param array The array to sample from.
    /// :return Random element from array.
    public class func sample<T>(array: [T]) -> T {
        return array[self.random(array.count)]
    }
    
    /// Slices the array based on the start and end position. If an end position is not specified it will slice till the end of the array.
