Skip to content

Instantly share code, notes, and snippets.

@erkekin
Last active August 27, 2016 16:59
Show Gist options
  • Save erkekin/6f0b71e16d03cff515279fc18b822e68 to your computer and use it in GitHub Desktop.
Save erkekin/6f0b71e16d03cff515279fc18b822e68 to your computer and use it in GitHub Desktop.
Get a random fixed count subset of an array in Swift
func getRandomElements<T:Equatable>(array:[T], count:Int) -> [T] {
var randomPicks: [T] = []
var randomIndex = Int.random(array.count)
var randomPick = array[randomIndex]
while randomPicks.count != count{
randomIndex = Int.random(array.count)
randomPick = array[randomIndex]
let contains = randomPicks.contains(randomPick)
if contains == false{
randomPicks.append(randomPick)
}
}
return randomPicks
}
public extension Int {
/// Returns a random Int point number between 0 and Int.max.
public static var random:Int {
get {
return Int.random(Int.max)
}
}
/**
Random integer between 0 and n-1.
- parameter n: Int
- returns: Int
*/
public static func random(n: Int) -> Int {
return Int(arc4random_uniform(UInt32(n)))
}
/**
Random integer between min and max
- parameter min: Int
- parameter max: Int
- returns: Int
*/
public static func random(min: Int, max: Int) -> Int {
return Int.random(max - min + 1) + min
//Int(arc4random_uniform(UInt32(max - min + 1))) + min }
}
}
@erkekin
Copy link
Author

erkekin commented Aug 27, 2016

Don't forget your objects conform to Equatable protocol.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment