当(-1)^ k为1并且其随机生成-1 - > k时,我想要发生一些事情。
我试过这个,但它不起作用
let test:Int32 = -1
let leftOrRight:CGFloat = pow(CGFloat(test),random(min:0,max:1))
func random(min : CGFloat, max : CGFloat) -> CGFloat{
return random() * (max - min) + min
}
leftOrRight总是NaN。
您试图以相同的概率生成CGFloat
或-1.0
的1.0
值。你可以通过生成0
或1
(使用arc4random_uniform(2)
)的值并在分配CGFloat
值之前测试它来做到这一点:
let leftOrRight: CGFloat = arc4random_uniform(2) == 0 ? 1 : -1
在Swift 4.2(Xcode 10)中,您可以使用Bool.random()
来简化它:
let leftOrRight: CGFloat = Bool.random() ? 1 : -1
如果您使用的是Swift 4 / 4.1,那么这应该可以解决问题:
let leftOrRight = 2 * (Double(arc4random_uniform(2)) - 0.5)
如果您使用的是Swift 4.2,则可以使用:
let array: [CGFloat] = [-1, 1]
let leftOrRight: CGFloat = array.randomElement()
如果你想要leftOrRight
to是一个随机的布尔值:
let leftOrRight: Bool = Bool.random()
有关Swift 4.2中的更多信息,请查看here。