我想生成一个可以在之间的随机数
-3...-8
和3...8
我知道我可以找到一种回旋方式,方法是先在0到1之间随机选择一个整数,然后选择范围:
let zeroOrOne = CGFloat.random(in: 0...1)
if zeroOrOne == 0 {
randomNum = CGFloat.random(in: -3...-8)
} else {
randomNum = CGFloat.random(in: 3...8)
}
但是我想知道是否有更好的方法可以做到这一点。
答案 0 :(得分:2)
我确定您要使用Bool.random
。
一种书写方式是
let randomNum = CGFloat.random(in: 3...8) * (Bool.random() ? 1 : -1)
或
var randomNum = CGFloat.random(in: 3...8)
if Bool.random() {
randomNum.negate()
}
没有一个正确的解决方案。
答案 1 :(得分:1)
有一个general solution用于在几个不重叠的范围内生成随机整数。
[x, y]
,则此权重就是(y - x) + 1
)。CGFloat.random(in: range)
。