为Swift中的标签数组中的文本分配不重复的随机数

Assigning Random numbers that don't repeat to the text in an array of labels Swift

本问题已经有最佳答案,请猛点这里访问。

我正在创建一个使用25个标签数组的应用程序。我希望这些标签被分配到1到25之间的随机数字,不会重复。我可以知道如何将这些标签分配给1到25之间可以重复的随机数字,但我不知道如何避免这些数字重复。到目前为止,我的代码如下。

1
2
3
 for label in labelsArray {
     let randomNumber = (arc4random() % 25) + 1
      label.text ="\(randomNumber)"

是否可以将每个标签分配给1到25之间的不同编号?


从一个1…25的数组开始,并在选择它们时从中提取数字:

1
2
3
4
5
6
7
8
var a = Array(1...25)

for label in labelsArray {
    let index = Int(arc4random_uniform(UInt32(a.count)))
    let randomNumber = a[index]
    a.removeAtIndex(index)
    label.text ="\(randomNumber)"
}


不是生成25个随机数,而是从一个数字数组1...25开始,随机洗牌。

(实际上,在这种特殊情况下,您可以从25个标签组成的数组开始,对数组进行无序排列,然后按顺序分配数字。)