快速生成不在数组中的随机数

时间:2019-01-14 04:10:16

标签: arrays swift random

我想生成一个不在数组中的随机数。如果是这样,它将继续生成,直到生成不是的数字为止。然后它将该数字附加到数组中。

第一次后,它不起作用。由于数组为空,因此第一次始终有效。我认为while循环存在问题。

这是我的代码:

var selectQuestion: UInt32 = 0
var questionsArray:[UInt32] = []
var questionNotAsked = false

if (questionsArray.isEmpty == true) {
    questionNotAsked = true
    selectQuestion = arc4random_uniform(10)
}

while(!questionNotAsked) {
    selectQuestion = arc4random_uniform(10) //0-9
    for questions in self.questionsArray {
        if selectQuestion == questions {
            self.questionNotAsked = false
            return
        } else {
            self.questionNotAsked = true
        }
    }
}

2 个答案:

答案 0 :(得分:1)

如果您只寻找0到9之间的数字,请使用这些值填充数组,然后shuffle填充它。然后遍历您需要的许多对象。如果最后,请重新洗牌并重复。

答案 1 :(得分:-3)

这就像一项作业。进行研究。这是一次非常有用和有趣的体验。

我只是遵循您想要实现的目标。有更优雅的方法可以实现这一点。

    var questionsArray:[UInt32] = []

    func nextRandom(){

    var selectQuestion: UInt32 = 0
    var questionNotAsked = false

    while(!questionNotAsked) {
        selectQuestion = arc4random_uniform(10) //0-9
        for questions in questionsArray {
            if selectQuestion == questions {
                questionNotAsked = true
                break;
            }
        }
        questionNotAsked = !questionNotAsked
        if questionNotAsked {
             questionsArray.append(selectQuestion)}
        }
    }

      nextRandom()
      nextRandom()
      nextRandom()
      nextRandom()
      nextRandom()
    nextRandom()
    nextRandom()
    nextRandom()
    nextRandom()
    nextRandom()

    print(questionsArray)