如何确保生成的随机数不等于下一个生成的数字?

时间:2015-07-18 02:53:58

标签: ios swift

每次按下按钮时,我都会在swift中生成一个随机数(仅为0-2)。但我不希望它连续两次生成相同的数字。 这就是我所做的,但它不起作用。

var currentNumber:Int = 5
var randomNumber:Int = 0

do {
    randomNumber = Int(arc4random_uniform(UInt32(3)))
} while randomNumber == currentNumber

currentNumber = randomNumber

2 个答案:

答案 0 :(得分:0)

请注意,如果您阻止相同的数字连续出现两次,则您的序列不再是随机/伪随机数。但是,如果必须,您可以将最新值与之前的值进行比较,然后重试,直到它们不同为止。

答案 1 :(得分:0)

您需要将randomNumber作为ViewController的属性,以便在按下按钮时记住它。每次只有2个有效随机数,因此请生成01范围内的数字,如果它与之前的数字匹配,则将其更改为2

class ViewController: UIViewController {
    // Give randomNumber an initial value
    var randomNumber = Int(arc4random_uniform(UInt32(3)))

    @IBAction func buttonPressed(button: UIButton) {
        let currentNumber = randomNumber
        randomNumber = Int(arc4random_uniform(UInt32(2)))
        if currentNumber == randomNumber {
            randomNumber = 2
        }
    }
}

这样做的好处是每按一次按钮只需要一个随机数。