Swift random float between 0 and 1
This is extension for random numbers of Int, Double, Float, CGFloat
Swift 3 & 4 & 5 syntax
import Foundationimport CoreGraphics// MARK: Int Extensionpublic extension Int { /// Returns a random Int point number between 0 and Int.max. static var random: Int { return Int.random(n: Int.max) } /// Random integer between 0 and n-1. /// /// - Parameter n: Interval max /// - Returns: Returns a random Int point number between 0 and n max static func random(n: Int) -> Int { return Int(arc4random_uniform(UInt32(n))) } /// Random integer between min and max /// /// - Parameters: /// - min: Interval minimun /// - max: Interval max /// - Returns: Returns a random Int point number between 0 and n max static func random(min: Int, max: Int) -> Int { return Int.random(n: max - min + 1) + min }}// MARK: Double Extensionpublic extension Double { /// Returns a random floating point number between 0.0 and 1.0, inclusive. static var random: Double { return Double(arc4random()) / 0xFFFFFFFF } /// Random double between 0 and n-1. /// /// - Parameter n: Interval max /// - Returns: Returns a random double point number between 0 and n max static func random(min: Double, max: Double) -> Double { return Double.random * (max - min) + min }}// MARK: Float Extensionpublic extension Float { /// Returns a random floating point number between 0.0 and 1.0, inclusive. static var random: Float { return Float(arc4random()) / 0xFFFFFFFF } /// Random float between 0 and n-1. /// /// - Parameter n: Interval max /// - Returns: Returns a random float point number between 0 and n max static func random(min: Float, max: Float) -> Float { return Float.random * (max - min) + min }}// MARK: CGFloat Extensionpublic extension CGFloat { /// Randomly returns either 1.0 or -1.0. static var randomSign: CGFloat { return (arc4random_uniform(2) == 0) ? 1.0 : -1.0 } /// Returns a random floating point number between 0.0 and 1.0, inclusive. static var random: CGFloat { return CGFloat(Float.random) } /// Random CGFloat between 0 and n-1. /// /// - Parameter n: Interval max /// - Returns: Returns a random CGFloat point number between 0 and n max static func random(min: CGFloat, max: CGFloat) -> CGFloat { return CGFloat.random * (max - min) + min }}
Use :
let randomNumDouble = Double.random(min: 0.00, max: 23.50)let randomNumInt = Int.random(min: 56, max: 992)let randomNumFloat = Float.random(min: 6.98, max: 923.09)let randomNumCGFloat = CGFloat.random(min: 6.98, max: 923.09)
Try initializing the divisor as a float as well, a la:
CGFloat(Float(arc4random()) / Float(UINT32_MAX))