多条件试卷提取的问题(附带测试代码)

问题来自http://q.cnblogs.com/q/38789/

题目如下:

最近在开发一个项目,做一个试题系统,其中有一个组卷功能(随机抽题),试题属性有:所属专业、题型、难易度、认知层次等。 现在需要实现随机组卷,抽出100道题满足以下条件:

条件1:

所属专业: 内科 20%  外科 30%    口腔科 25%  神经科 25。

条件2:

题型: 单选题  30%  多选题 40%   简答题 30%

条件3:

难易度:  难 20%   中 60%    易 20% 

条件4:

认知层次: 记忆25%   应用40%   理解 35%

这类题在博问看到了好几次,花了点时间写了下面的代码希望能帮助到需要的人。

 

其实多条件问题之所以难就是在效率上,所以一般是反过来解决,看条件挑符合的,测试中因为是随机生成的样本库,随机了几次都打不到100题,所以直接生成相应的题目。

下面类实现了两种场景的效率考虑,如果是遍历比较快的可以直接调用AddTest全加一遍,如果是查询比较快的可以通过KindOfTestNeed来提取查询条件,目前的代码生成的结果每次是一样的,如果有真实的库可以采取查询结果的随机化和KindOfTestNeed条件的随机化来生成不同的卷子。

实际引用可以参考Artwl的文章:

 

实例讲解遗传算法——基于遗传算法的自动组卷系统【理论篇】

 

实例讲解遗传算法——基于遗传算法的自动组卷系统【实践篇】

直接上代码:

 测试结果:

DoGenerate : PassedTotoal:100
1    Medicine    SingleAnswer    Hard    Remember
2    Medicine    SingleAnswer    Hard    Remember
3    Medicine    SingleAnswer    Hard    Remember
4    Medicine    SingleAnswer    Hard    Remember
5    Medicine    SingleAnswer    Hard    Remember
6    Medicine    SingleAnswer    Hard    Remember
7    Medicine    SingleAnswer    Hard    Remember
8    Medicine    SingleAnswer    Hard    Remember
9    Medicine    SingleAnswer    Hard    Remember
10    Medicine    SingleAnswer    Hard    Remember
11    Medicine    SingleAnswer    Hard    Remember
12    Medicine    SingleAnswer    Hard    Remember
13    Medicine    SingleAnswer    Hard    Remember
14    Medicine    SingleAnswer    Hard    Remember
15    Medicine    SingleAnswer    Hard    Remember
16    Medicine    SingleAnswer    Hard    Remember
17    Medicine    SingleAnswer    Hard    Remember
18    Medicine    SingleAnswer    Hard    Remember
19    Medicine    SingleAnswer    Hard    Remember
20    Medicine    SingleAnswer    Hard    Remember
22    Surgery    SingleAnswer    Middle    Remember
23    Surgery    SingleAnswer    Middle    Remember
24    Surgery    SingleAnswer    Middle    Remember
25    Surgery    SingleAnswer    Middle    Remember
26    Surgery    SingleAnswer    Middle    Remember
28    Surgery    SingleAnswer    Middle    Impl
29    Surgery    SingleAnswer    Middle    Impl
30    Surgery    SingleAnswer    Middle    Impl
31    Surgery    SingleAnswer    Middle    Impl
32    Surgery    SingleAnswer    Middle    Impl
34    Surgery    MultiAnswer    Middle    Impl
35    Surgery    MultiAnswer    Middle    Impl
36    Surgery    MultiAnswer    Middle    Impl
37    Surgery    MultiAnswer    Middle    Impl
38    Surgery    MultiAnswer    Middle    Impl
39    Surgery    MultiAnswer    Middle    Impl
40    Surgery    MultiAnswer    Middle    Impl
41    Surgery    MultiAnswer    Middle    Impl
42    Surgery    MultiAnswer    Middle    Impl
43    Surgery    MultiAnswer    Middle    Impl
44    Surgery    MultiAnswer    Middle    Impl
45    Surgery    MultiAnswer    Middle    Impl
46    Surgery    MultiAnswer    Middle    Impl
47    Surgery    MultiAnswer    Middle    Impl
48    Surgery    MultiAnswer    Middle    Impl
49    Surgery    MultiAnswer    Middle    Impl
50    Surgery    MultiAnswer    Middle    Impl
51    Surgery    MultiAnswer    Middle    Impl
52    Surgery    MultiAnswer    Middle    Impl
53    Surgery    MultiAnswer    Middle    Impl
55    Stomatology    MultiAnswer    Middle    Impl
56    Stomatology    MultiAnswer    Middle    Impl
57    Stomatology    MultiAnswer    Middle    Impl
58    Stomatology    MultiAnswer    Middle    Impl
59    Stomatology    MultiAnswer    Middle    Impl
60    Stomatology    MultiAnswer    Middle    Impl
61    Stomatology    MultiAnswer    Middle    Impl
62    Stomatology    MultiAnswer    Middle    Impl
63    Stomatology    MultiAnswer    Middle    Impl
64    Stomatology    MultiAnswer    Middle    Impl
65    Stomatology    MultiAnswer    Middle    Impl
66    Stomatology    MultiAnswer    Middle    Impl
67    Stomatology    MultiAnswer    Middle    Impl
68    Stomatology    MultiAnswer    Middle    Impl
69    Stomatology    MultiAnswer    Middle    Impl
71    Stomatology    MultiAnswer    Middle    Understand
72    Stomatology    MultiAnswer    Middle    Understand
73    Stomatology    MultiAnswer    Middle    Understand
74    Stomatology    MultiAnswer    Middle    Understand
75    Stomatology    MultiAnswer    Middle    Understand
77    Stomatology    ShortAnswer    Middle    Understand
78    Stomatology    ShortAnswer    Middle    Understand
79    Stomatology    ShortAnswer    Middle    Understand
80    Stomatology    ShortAnswer    Middle    Understand
81    Stomatology    ShortAnswer    Middle    Understand
83    Neurology    ShortAnswer    Middle    Understand
84    Neurology    ShortAnswer    Middle    Understand
85    Neurology    ShortAnswer    Middle    Understand
86    Neurology    ShortAnswer    Middle    Understand
87    Neurology    ShortAnswer    Middle    Understand
89    Neurology    ShortAnswer    Easy    Understand
90    Neurology    ShortAnswer    Easy    Understand
91    Neurology    ShortAnswer    Easy    Understand
92    Neurology    ShortAnswer    Easy    Understand
93    Neurology    ShortAnswer    Easy    Understand
94    Neurology    ShortAnswer    Easy    Understand
95    Neurology    ShortAnswer    Easy    Understand
96    Neurology    ShortAnswer    Easy    Understand
97    Neurology    ShortAnswer    Easy    Understand
98    Neurology    ShortAnswer    Easy    Understand
99    Neurology    ShortAnswer    Easy    Understand
100    Neurology    ShortAnswer    Easy    Understand
101    Neurology    ShortAnswer    Easy    Understand
102    Neurology    ShortAnswer    Easy    Understand
103    Neurology    ShortAnswer    Easy    Understand
104    Neurology    ShortAnswer    Easy    Understand
105    Neurology    ShortAnswer    Easy    Understand
106    Neurology    ShortAnswer    Easy    Understand
107    Neurology    ShortAnswer    Easy    Understand
108    Neurology    ShortAnswer    Easy    Understand

 

posted @   today4king  阅读(499)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2011-07-18 Mock HttpContext in TDD的几种简单应用
点击右上角即可分享
微信分享提示
主题色彩