Skip to content

Instantly share code, notes, and snippets.

@robtimp
Last active June 6, 2016 16:25
Show Gist options
  • Save robtimp/2dd3bb251f64fa45f24ec2e70fbeb7e4 to your computer and use it in GitHub Desktop.
Save robtimp/2dd3bb251f64fa45f24ec2e70fbeb7e4 to your computer and use it in GitHub Desktop.
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