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

时间:2018-09-04 23:46:20

标签: swift random

当(-1)^ k为1且其-1-> k随机生成时,我想发生一些事情。

我尝试了这个,但是没有用

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

leftOrRight始终为NaN。

2 个答案:

答案 0 :(得分:5)

您正在尝试以相等的概率生成CGFloat-1.0的{​​{1}}值。为此,您可以生成1.00的值(使用1并对其进行测试,然后再分配arc4random_uniform(2)值:

CGFloat

Swift 4.2 (Xcode 10)中,您可以使用let leftOrRight: CGFloat = arc4random_uniform(2) == 0 ? 1 : -1 对其进行简化:

Bool.random()

答案 1 :(得分:2)

如果您使用的是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是随机布尔值:

let leftOrRight: Bool = Bool.random()

有关Swift 4.2的更多内容,请查看here