Swift random float between 0 and 1 Swift random float between 0 and 1 swift swift

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))


swift 4.2 :

let randomFloat = Float.random(in: 0..<1)