我想在 Swift 中生成多个不同的随机数。这是程序。
- 设置一个空数组
- 生成随机数
检查数组是否为空
A。如果数组为空,则插入随机数
b.如果数组不为空,则将随机数与数组中的数字进行比较
我。如果数字相同,则重复2
二.如果数字不相同,则插入随机数并重复2import UIKit //the random number generator func randomInt(min: Int, max:Int) -> Int { return min + Int(arc4random_uniform(UInt32(max - min + 1))) } var temp = [Int]() for var i = 0; i<4; i++ { var randomNumber = randomInt(1, 5) if temp.isEmpty{ temp.append(randomNumber) } else { //I don't know how to continue... } }
最佳答案
如果您使用您的方法,问题是您每次都会创建一个新的随机数。因此,您可能会有 4 次相同的随机数,因此您的数组将只有一个元素。
因此,如果您只想以随机顺序获得特定数字范围(例如 0-100)内的数字数组,则可以首先按“正常”顺序用数字填充数组。例如 for 循环等:
var min = 1
var max = 5
for var i = min; i<= max; i++ {
temp.append(i)
}
之后就可以使用shuffle方法对数组的所有元素进行打乱,shuffle方法从this answer开始:
func shuffle<C: MutableCollectionType where C.Index == Int>(var list: C) -> C {
let count = countElements(list)
for i in 0..<(count - 1) {
let j = Int(arc4random_uniform(UInt32(count - i))) + i
swap(&list[i], &list[j])
}
return list
}
之后你可以做类似的事情:
shuffle(temp) // e.g., [3, 1, 2, 4, 5]
关于ios - 生成一个不重复随机数的 Swift 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31467587/