arrays - 将不重复的随机数添加到数组中

标签 arrays swift shuffle

您好,我正在尝试从不重复的随机数创建一个数组。

我写了下面的代码numberOfAnimals当前 10 显示数组中有多少个数字。当我在 Playground 上运行这个时,我得到

“[6, 5, 1, 4, 7, 0]\n”作为 print 语句的输出,因此总共 6 个数字而不是 10 个。为了避免它,我正在减少 i 的值在if语句如果数组中已经存在随机数,在这种情况下 for 循环需要额外的循环才能达到 10 但仍然不起作用。

您能否检查一下错误在哪里,或者给我另一个可行的代码建议?

import UIKit

var array = [Int]()
var max : Int = 10
var numberOfAnimals : Int = 10

for var i in 0..<numberOfAnimals {

    let randomNumber : Int = Int(arc4random_uniform(UInt32(max)))

    if array.contains(randomNumber) {

        i = i - 1

    } else {

        array.append(randomNumber)

    }

}
print(array)

最佳答案

为什么不使用一个 while 循环,直到数组中有十个数字为止。

while array.count < 10 {
...

  if !array.contains(randomNumber) {
    array.append(randomNumber)
  }
}

关于arrays - 将不重复的随机数添加到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48735487/

相关文章:

Java ArrayList.contains() 和 add() 方法

c - 将指针数组传递给函数

swift - 如何更改搜索栏的边框(Swift)

ios - 未捕获的异常 : This class is not key value coding-compliant

swift - RemoveAtIndex 使 Playground 崩溃

Golang 加密随机播放

c - 结构体中数组的 malloc

java - 将数组传递给构造函数

javascript - 优雅地打乱 Javascript 数组

python - Numpy:洗牌元素的子集