(-1)^ k,随机k为0或1

Beg*_*ner 0 random swift

当(-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
}
Run Code Online (Sandbox Code Playgroud)

leftOrRight总是NaN.

vac*_*ama 5

您试图生成或具有相同概率的CGFloat值.您可以通过生成值或(使用)并在分配值之前测试它来执行此操作:-1.01.001arc4random_uniform(2)CGFloat

let leftOrRight: CGFloat = arc4random_uniform(2) == 0 ? 1 : -1
Run Code Online (Sandbox Code Playgroud)

Swift 4.2(Xcode 10)中,您可以使用Bool.random()它来简化它:

let leftOrRight: CGFloat = Bool.random() ? 1 : -1
Run Code Online (Sandbox Code Playgroud)