Ios Swift中两位小数之间的随机数

Ios Swift中两位小数之间的随机数,ios,random,swift,Ios,Random,Swift,我想在两个小的十进制数之间取一个随机数 大概在0.8到1.3之间 var duration = CGFloat(arc4random() % 0.8) / 1.3 或 谢谢 这是一个我刚刚快速编写的通用函数,用于获取一个范围内的随机数 func randomBetween(_ firstNum: CGFloat, _ secondNum: CGFloat) -> CGFloat{ return CGFloat(arc4random()) / CGFloat(UINT32_MAX)

我想在两个小的十进制数之间取一个随机数

大概在0.8到1.3之间

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


谢谢

这是一个我刚刚快速编写的通用函数,用于获取一个范围内的随机数

func randomBetween(_ firstNum: CGFloat, _ secondNum: CGFloat) -> CGFloat{
    return CGFloat(arc4random()) / CGFloat(UINT32_MAX) * abs(firstNum - secondNum) + min(firstNum, secondNum)
}
它取一个随机数,找到该数的剩余部分除以两个参数之间的差,然后再加上较小的数。这保证了随机数介于两个数字之间

免责声明:我还没有测试过

编辑:现在,此函数可以执行您想要的操作。

Swift 5:

使用返回指定范围内的随机值:

var duration = CGFloat.random(in: 0.8 ... 1.3)
每个苹果:

random()静态方法从连续变量中选择一个随机值 在范围内均匀分布,然后将该值转换为 此类型中最接近的可表示值


请参阅以指定默认值以外的随机生成器。

如果要获得2个随机数,请调用该色调两次并存储到数组。这是一个简单的数学运算。数字的范围是多少?@HotLicks我不明白。希望我能做这个CGFloat(arc4random()%0.5)+0.8,但我不知道如何使用十进制数获得正确的语法。我的范围是0.8到1.3。@Bejibun我不想要两个数字,我想要一个介于.8和1之间的数字。3@HotLicks请帮忙!听起来你知道怎么做。我不认为余数运算符%接受浮点数作为第二个参数。@MartinR那个错误只是因为我有Int%CGFloat而对我大喊大叫。一旦我将Int转换为CGFloat,它就可以工作了。是的,余数操作符(不是模)在Swift中有不同的行为:@MartinR你是对的。它失败的原因与我的示例相同。这并不像我想象的那样随机(很多是9)。我将在一个游乐场测试,不知道它接受浮动,谢谢你的信息!
var duration = CGFloat.random(in: 0.8 ... 1.3)