想象一下使用(随机)问题列表进行的小测验。每个问题都有两个性质:
当一个问题在屏幕上显示时,会显示三个可能的答案: A、B和C。其中一个是问题的正确答案,另两个是未来问题的答案。澄清的一个例子:
问题1: 2+2多少钱?A: 3,B: 4,C: 5
回答完这个问题后,“答案”B会从屏幕上移除,然后出现一个新的问题。第一个问题的答案A和C保留在屏幕上,并增加了一个新的答案B:
问题2: 6-3多少钱?A: 3,B: 6,C: 5
现在答案A消失了,一个新的问题和答案出现在它的位置上:
问题3: 10/2是多少?A: 2,B: 6,C: 5
这个计划在X个问题上继续存在。最容易编程的算法就是总是用问题X+1的新答案来代替问题X中的答案。当然,这是没有意义的,因为参加测试的人很快就会发现最新添加的答案总是正确的。
我可以想出一个硬编码的顺序,在屏幕上出现问题和答案,这样A/B/C之间有一个很好的混合,是正确的答案,但是我会随机地把它随机化。我找不到一种(数学)算法来聪明地做到这一点。问题必须是随机的,但答案不能。有时问题X的答案本应在几个问题之前作为备选案文A、B或C添加,因为它变得相关,但有时添加最新的答案也是正确的答案。
我的问题是:我可以用什么技术或算法来解决这个问题?
发布于 2019-02-21 16:12:50
这是我的策略。假设总是正确的答案消失了。
QA)Q随机抽取3个问题,并将它们推送到A (从Q中删除)A随机选择一个问题AQ中选择另一个问题并替换A中的当前问题(从Q中删除它)Q为空对于最后两个问题,他们没有足够的干扰物,所以你可能会产生随机的干扰物,或者选择一些使用过的干扰物。
如果Q是一个数组,则可以通过交换随机选择的元素和最后一个有效元素来有效地删除元素。然后,您可以重复执行类似rand() % NUM_REMAINING_QUESTIONS的操作。
https://stackoverflow.com/questions/54810906
复制相似问题