最近在开发一个项目,做一个试题系统,其中有一个组卷功能(随机抽题),试题属性有:所属专业、题型、难易度、认知层次等。 现在需要实现随机组卷,抽出100道题满足以下条件:
条件1:
所属专业: 内科 20% 外科 30% 口腔科 25% 神经科 25。
条件2:
题型: 单选题 30% 多选题 40% 简答题 30%
条件3:
难易度: 难 20% 中 60% 易 20%
条件4:
认知层次: 记忆25% 应用40% 理解 35%
请高手帮忙解答。
留名关注 如果只有一个条件 就简单了
多谢关注,这个问题头疼我好几天了。
我认为可以采用条件1*条件2*条件3*添加4的方法组合 得到应该每种多少题目。
假设你对四种组合没有要求,如题意每题都有相应的四种属性,那么可以依据其中一种条件遍历出所有可能之后再对其余三个条件逐一过滤筛选,最后得到的就是结果。
条件很多时,这个效率无法保证
@追忆: 看了artwl的实现,他的比较好!
关注...
原来做过这样的系统,可以说一模一样。我的做法是,先在内存中建一个数组,保存这些信息,然后分配题型,再随机分配各种属性,最后,从题库中根据每一道题的属性,再从题库中随机抽题即可
你说的,我有点不太明白,这个随机分配按什么条件来做?能不能详细的说一下?
不考虑效率的话应该算法很简单吧。
随机取题,拿到四个条件去匹配,匹配上就该条件选项++,如果该条件选项已满(则break,进入下一次随机)