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

我每按一次button都会产生一个随机数(只有0-2)。 但我不希望它连续两次生成相同的数字。 这是我做的,但它不工作。

var currentNumber:Int = 5 var randomNumber:Int = 0 do { randomNumber = Int(arc4random_uniform(UInt32(3))) } while randomNumber == currentNumber currentNumber = randomNumber 

你需要使randomNumber成为ViewController一个属性,以便在按下button之间记住它。 每次只有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 } } } 

这样每个button按下只需要一个随机数就可以了。

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