Skip to content

Instantly share code, notes, and snippets.

@mattt
Last active August 26, 2019 15:37
Show Gist options
  • Save mattt/f2ee2eed3570d1a9d644 to your computer and use it in GitHub Desktop.
Save mattt/f2ee2eed3570d1a9d644 to your computer and use it in GitHub Desktop.
import Darwin
extension Int {
static func random() -> Int {
return Int(arc4random())
}
static func random(range: Range<Int>) -> Int {
return Int(arc4random_uniform(UInt32(range.endIndex - range.startIndex))) + range.startIndex
}
}
extension Double {
static func random() -> Double {
return drand48()
}
}
@MatrixSenpai
Copy link

MatrixSenpai commented May 25, 2016

Note iLast can be left out in favor of ..<count.
Same in Int.random(i..<count).
Also note [T] is deprecated in favor of [Element]
For sets

extension Set {
    mutating func shuffle() {
        if count > 1 {
            for i in 0..<count {
                let r = Int.random(i..<count)
                let temp = self[self.startIndex.advancedBy(r)]
                self.removeAtIndex(self.startIndex.advancedBy(r))
                self.insert(temp)
            }
        }
    }
}

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