Swift хранит все числа, которые были сгенерированы случайным образом и не будут генерировать их снова - PullRequest
0 голосов
/ 30 июня 2018

Я пытаюсь сохранить все числа, которые генерирует генератор случайных чисел. После этого генератор чисел должен проверить, сгенерирован ли уже номер, и если это так, он будет продолжать генерировать новый номер, пока не будут сгенерированы все числа, например, от 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 голосов
/ 30 июня 2018

Я считаю, что вы пытаетесь получить случайный генератор, который генерирует числа от 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)
    }

}

Этот цикл будет продолжаться до тех пор, пока в массиве не будет (число вопросов) целых чисел. Дайте мне знать, если это то, что вы ищете.

Удачи, Арнав

0 голосов
/ 30 июня 2018

Возможно, проще всего создать массив или список и заполнить его нужными номерами от 1 до n, перемешать и затем использовать числа в порядке их появления. Таким образом, вам гарантировано, что каждое число будет отображаться ровно один раз.

См. , как перемешать массив в Swift

...