使用数组来防止使用个案?

所以我有这个,

func doStuff() { //blahblahblah } var randomNumber = arc4random() % 4 randomNumber += 1 switch(randomNumber) { case 1: doStuff() break case 2: doStuff() break case 3: doStuff() break case 4: doStuff() break } 

现在我需要它来做这样的事情

  func doStuff() { //blahblahblah } var alreadyUsed = [""] var randomNumber = arc4random() % 4 randomNumber += 1 if randomNumber is not inside alreadyUsed { switch(randomNumber) { case 1: doStuff() alreadyUsed.append("1") break case 2: doStuff() alreadyUsed.append("2") break case 3: doStuff() alreadyUsed.append("3") break case 4: doStuff() alreadyUsed.append("4") break } } 

本质上,我想要随机select一个案例,然后在下一次运行该函数时不再select相同的案例。 我正在使用第一块代码作为一个函数。 在使用该function后,我不希望该function再次使用它。 我希望这是有道理的。

多谢你们!

编辑:虽然我会发现它更有用,它甚至不必是一个数组,只要它完成了工作。

 var someArray = [1,2,3,4] let index = Int(arc4random_uniform(UInt32(someArray.count))) let randomNumber = someArray[index] someArray.removeAtIndex(index) 

这应该做你想要的。

  • 首先用可用的数字创build一个数组
  • 让它随机select一个索引号码
  • 删除数组中的数字

我已经改变了UInt32到Int的转换,因为根据这个职位 :

Int(arc4random())会在32位平台上执行50%的时间,这是因为UInt32不适合Int32