首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >随机回答/问题排序算法

随机回答/问题排序算法
EN

Stack Overflow用户
提问于 2019-02-21 15:41:06
回答 1查看 265关注 0票数 4

想象一下使用(随机)问题列表进行的小测验。每个问题都有两个性质:

  • 文本
  • 回答

当一个问题在屏幕上显示时,会显示三个可能的答案: 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添加,因为它变得相关,但有时添加最新的答案也是正确的答案。

我的问题是:我可以用什么技术或算法来解决这个问题?

  • 输入:{文本,答案}列表
  • 输出:{text,answerA,answerB,answerC}的列表,其中A/B/C中的一个必须是正确的答案,列表中的两个相邻项之间只有A/B/C中的一个可以不同。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-21 16:12:50

这是我的策略。假设总是正确的答案消失了。

  1. 让我们将输入问题集命名为Q
  2. 创建大小为3的数组(让我们将其命名为A)
  3. Q随机抽取3个问题,并将它们推送到A (从Q中删除)
  4. A随机选择一个问题
  5. 显示所选问题的文本,选项为3 _answer_s in A
  6. 用户选择其中之一,但我们假设总是正确的答案消失了。
  7. Q中选择另一个问题并替换A中的当前问题(从Q中删除它)
  8. 转到4,然后重复,直到Q为空

对于最后两个问题,他们没有足够的干扰物,所以你可能会产生随机的干扰物,或者选择一些使用过的干扰物。

如果Q是一个数组,则可以通过交换随机选择的元素和最后一个有效元素来有效地删除元素。然后,您可以重复执行类似rand() % NUM_REMAINING_QUESTIONS的操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54810906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档