使用数组来防止使用个案?
所以我有这个,
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