Last active
June 6, 2016 16:25
-
-
Save robtimp/2dd3bb251f64fa45f24ec2e70fbeb7e4 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
struct Random { | |
static func randomNumberUpTo(upTo: Int) -> Int { | |
return Int(arc4random_uniform(UInt32(upTo))) | |
} | |
static func randomNumberInRange(range: Range<Int>) -> Int { | |
let distance = range.endIndex - range.startIndex | |
let random = randomNumberUpTo(distance) | |
return range.startIndex + random | |
} | |
} | |
extension Array where Element: Equatable { | |
func randomElements(numberOfElements: Int) -> [Element]? { | |
guard self.count >= numberOfElements else { | |
return nil | |
} | |
var elements = [Element]() | |
while elements.count < numberOfElements { | |
let index = Random.randomNumberUpTo(self.count) | |
let randomElement = self[index] | |
if elements.contains(randomElement) { | |
continue | |
} | |
elements.append(randomElement) | |
} | |
return elements | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment