var array: [Int] = []
//Here I make an array to try to dictate when to perform an IBaction.
func random() -> Int {
let rand = arc4random_uniform(52)*10+10
return Int(rand)
}
//this function makes a random integer for me
func finalRand() -> Int {
var num = random()
while (array.contains(num) == true){
if (num == 520){
num = 10
}else {
num += 10
}
}
array.append(num)
return num
}
while语句中的逻辑有些令人困惑,但你可以试试这个:
var array:Array<Int> = []
func finalRand() -> Int {
var num = Int(arc4random_uniform(52)*10+10)
while array.contains(num) {
num = Int(arc4random_uniform(52)*10+10)
}
array.append(num)
return num
}
这种方式永远不会重复,并且您的锅炉代码更少。
可能有更好的方法涉及集合,但很抱歉我对此并不了解。
一些东西:
random
例程
func random() -> Int {
return Int.random(in: 1...52) * 10
}
let array = Array(1...52).map { $0 * 10 }
.shuffled()
只需遍历那个混乱的值数组。
如果你在完成所有值后确实需要继续生成数字,那么你可以,例如,重新洗牌并从新洗牌的数组的开头开始。shuffled
例程一样,来生成一个真正均匀分布的值系列。只需生成可能值的数组并将其洗牌。