我想要一个在两个小数之间随机的数字。
例如0.8和1.3之间的数字。
var duration = CGFloat(arc4random() % 0.8) / 1.3
或者var duration = CGFloat(arc4random() % 0.5) + 0.8
谢谢!
我想要一个在两个小数之间随机的数字。
例如0.8和1.3之间的数字。
var duration = CGFloat(arc4random() % 0.8) / 1.3
或者var duration = CGFloat(arc4random() % 0.5) + 0.8
谢谢!
我刚刚写了一个通用函数,用于快速获取在指定范围内的随机数。
func randomBetween(_ firstNum: CGFloat, _ secondNum: CGFloat) -> CGFloat{
return CGFloat(arc4random()) / CGFloat(UINT32_MAX) * abs(firstNum - secondNum) + min(firstNum, secondNum)
}
它取一个随机数,找到该数字除以两个参数之差的余数,然后加上较小的数字。这确保了随机数在两个数字之间。
免责声明:我还没有测试过这个功能。
EDIT:现在此函数已按您要求执行。
firstNum
始终小于secondNum
,则此代码应更快:static func randomBetweenNumbers(lowerNum: CGFloat, higherNum: CGFloat) -> CGFloat{
return CGFloat(arc4random()) / CGFloat(UINT32_MAX) * (higherNum - lowerNum) + lowerNum
}
- PatrickSwift 5:
使用random(in:)方法生成指定范围内的随机值。
var duration = CGFloat.random(in: 0.8 ... 1.3)
根据苹果文档:
random() 静态方法会从一个连续均匀分布的范围中选择一个随机值,并将该值转换为此类型中最接近的可表示值。
参见random(in: using: )以指定非默认的随机生成器。