#17: Generate Random Numbers with Swift
As you were used to do in Objective-C, you can still generate random numbers using the functions based on the RC4 cipher on Darwin platforms:
let random = arc4random() // From 0 to Int32.max-1
let random2 = arc4random_uniform(100) // From 0 to 99
arc4random_stir() // Re-initialize the random number generator with /dev/urandom
Both arc4random
and arc4random_uniform
will generate an uniformly distributed random number, but with different range.
But as you can see, all the arc4 functions return an Int32
result, regardless of the platform you are on.
The arc4random_buf
function can be used to increase the range to the maximum allowed by the platform’s Int:
public func arc4randomInt() -> Int {
var tmp: Int = 0
arc4random_buf(&tmp, MemoryLayout<Int>.size)
return tmp
}
On Linux and other non-darwin platforms, these functions will not be available but the usual libc functions or a custom random number generator should be used instead.
For more information on random number generators, check out this post from CocoaWithLove.
Did you like this article? Let me know on Twitter or subscribe for updates!