我想生成一个不在数组中的随机数。如果是这样,它将继续生成,直到生成不是的数字为止。然后它将该数字附加到数组中。
第一次后,它不起作用。由于数组为空,因此第一次始终有效。我认为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
}
}
}
答案 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)