I'm trying to generate random values between two integers. I've tried this, which starts from 0,
let randomNumber = arc4random_uniform(10)
println(randomNumber)
But I need a value between 10 and 50.
try this
let randomNumber = arc4random_uniform(40) + 10
println(randomNumber)
in general form
let lower : UInt32 = 10
let upper : UInt32 = 50
let randomNumber = arc4random_uniform(upper - lower) + lower
println(randomNumber)
This is an option for Swift 4.2 and above using the random()
method, which makes it easy!
let randomInt = Int.random(in: 10...50)
The range can be a closed (a...b
) or half open (a..<b
) range.
more simple way of random number generator
func random(min: Int, max: Int) -> Int {
return Int(arc4random_uniform(UInt32(max - min + 1))) + min
}
If you want to generate exclusively between 2 integers, you can use
func random(_ x: UInt32, _ y: UInt32) -> UInt32 {
Bool.random() ? x : y
}
But if you want to generate between 2 integers range, you can use
func random(_ lower: UInt32, _ upper: UInt32) -> UInt32 {
Int.random(in: lower...upper)
}