Random number between two decimals in Swift

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.


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.

Tags:

Ios

Random

Swift