Random number between two decimals in Swift

前端 未结 2 821
离开以前
离开以前 2020-12-19 02:24

I\'d like to get a random number between two small decimal numbers.

Between maybe 0.8 and 1.3.

var duration = CGFloat(arc4random() % 0.8) / 1.3


        
相关标签:
2条回答
  • 2020-12-19 03:15

    Swift 5:

    Using random(in:) which returns a random value within the specified range:

    var duration = CGFloat.random(in: 0.8 ... 1.3)
    

    Per Apple:

    The random() static method chooses a random value from a continuous uniform distribution in range, and then converts that value to the nearest representable value in this type.

    See random(in: using: ) to specify a random generator other than the default.

    0 讨论(0)
  • 2020-12-19 03:18

    Here's a generic function I just wrote up quickly to get a random number within a range.

    func randomBetween(_ firstNum: CGFloat, _ secondNum: CGFloat) -> CGFloat{
        return CGFloat(arc4random()) / CGFloat(UINT32_MAX) * abs(firstNum - secondNum) + min(firstNum, secondNum)
    }
    

    It takes a random number, finds the remainder of that number divided by the difference between the two parameters, then adds by the smaller number. This guarantees the random number to be between the two numbers.

    Disclaimer: I have not tested this out yet.

    EDIT: Now this function does what you want.

    0 讨论(0)
提交回复
热议问题