迅速存储所有随机生成的数字,不会再次生成它们

时间:2018-06-30 16:10:23

标签: swift arc4random

我正在尝试存储随机数生成器生成的所有数字。此后,数字生成器需要检查是否已经生成了数字,如果是,它将继续生成新的数字,直到生成所有数字(例如1到30)为止。到目前为止,我只有随机数生成器:

if let Aantalvragen = snapshot?.data()!["Aantal vragen"] as? String {
       self.AantalVragenDef = Aantalvragen
}
let RandomVraag = Int(arc4random_uniform(UInt32(self.AantalVragenDef)!) + 1)

AantalVragenDef是一个数字,指示有多少个问题。因此,生成器知道它可以生成多远。请帮忙。

2 个答案:

答案 0 :(得分:4)

最简单的方法可能是创建一个数组或列表,并用所需的数字1到n进行填充,将其随机排列,然后按出现的顺序使用数字。这样,您可以确保每个数字仅显示一次。

请参见how to shuffle an array in Swift

答案 1 :(得分:0)

我相信您想要获得的是一个随机生成器,该生成器生成从1到问题数量的数字,但是如果该数量已经存在,则您不想保留它。我建议使用if-else语句和数组。

代码可能看起来像这样:

if let Aantalvragen = snapshot?.data()!["Aantal vragen"] as? String {
   self.AantalVragenDef = Aantalvragen
}

var array = [Int]()

while array.count != self.AantalVragenDef {
    let RandomVraag = Int(arc4random_uniform(UInt32(self.AantalVragenDef)!) + 1)
    if array.contains(RandomVraag) == false {
        array.append(RandomVraag)
    }

}

此循环将继续进行,直到数组中有(问题数)个整数为止。让我知道这是否是您想要的。

祝你好运,Arnav