我想制作一个从db获取随机问题的游戏,但我不想重复...我正在尝试制作一个代码,将 nextLv int与< em> usedQuestions [] Array。
int nextLv;
int[] usedQuestion = {1, 0, 0, 0, 0, 0, 0, 0} //When u get the question from the db it insert it at the next 0
答案 0 :(得分:0)
数据库已经可以处理这种逻辑
首先将usedQuestion数组初始化为空。然后从数据库中选择一个随机问题:
SELECT * FROM
myQuestions
WHERE id
NOT IN () ORDER BY RAND() LIMIT 1
(假设MySQL)
检查以确保查询返回记录,以防我们到达数据库列表的末尾或我们遇到某种错误,并将记录ID存储在我们的数组中。然后,假设上一个问题的ID为myQuestions
,请修改您的下一个查询:
id
检查以确保查询返回记录,以防我们到达数据库列表的末尾或我们遇到某种错误,并将记录ID存储在我们的数组中。然后,假设我们的第二个问题ID为7
,请用逗号连接数组ID,我们将创建下一个查询:
SELECT * FROM
myQuestions
WHERE id
NOT IN (7) ORDER BY RAND() LIMIT 1
等
你也可以在没有花哨的查询的情况下处理这种逻辑。首先,选择数据库中的记录数并将问题数存储在变量中。然后生成1到该数字之间的随机数,并将其用作从数据库中选择的id。如果您的数据库ID中存在间隙,则可以通过利用LIMIT / OFFSET来改为SELECT。例如,要选择数据库中的第3条记录,您将使用LIMIT 2,1因此偏移2并限制为1。
接下来,将随机数结果存储在数组中。
现在生成一个介于1和数据库大小之间的新随机数减去数组的大小。然后遍历您的数组,如果您选择的随机数存在于数组中,则添加一个然后从头开始循环,并在数组中每次添加一个循环。最后,您已准备好第二个号码。将修改后的数字存储在数组中而不是随机函数的结果中,并从数据库中选择其ID。例如,假设您的数据库中有8条记录:
1,2,3,4,5,6,7,8-
首先,您要生成1-8的随机数整数
让我们说结果是7.您将它存储在数组中并选择数据库中的第7条记录。然后你生成一个1-7的随机整数,让我们再次弹出7,你循环遍历数组并看到7已经存在,所以你要添加1并重新启动数组。由于数组中没有8,因此您将其存储在数组中并选择数据库中的第8条记录。到目前为止,我们已经随机选择了数据库中的2个结束记录。然后我们生成一个随机数1-6,让它说它是1,所以我们将它存储到你的数组中并从数据库中选择第一条记录。我们的数组现在为:myQuestions
。然后我们生成一个随机数1-5。让我们说我们再次以1结束。我们看到1已经在我们的数组中,所以我们添加1.因此我们从数据库中选择第二条记录并在数组中存储2条。等