所以我有这个,
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
}
}
基本上,我正在尝试随机选择一个案例,然后在下次运行该函数时再次选择相同的案例。我正在使用第一块代码作为函数。在该函数中使用了一个案例之后,我不希望该函数再次使用它。我希望这是有道理的。
谢谢你们!
编辑:虽然我发现它更有用,但它甚至不必是一个数组,只要它完成工作。
答案 0 :(得分:5)
var someArray = [1,2,3,4]
let index = Int(arc4random_uniform(UInt32(someArray.count)))
let randomNumber = someArray[index]
someArray.removeAtIndex(index)
这应该做你想要的。
我已经将UInt32的转换更改为Int,因为根据此post:
Int(arc4random())
将在32位平台上执行50%的崩溃,因为UInt32不适合Int32