随机抽题算法_第1页
随机抽题算法_第2页
随机抽题算法_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、随机抽题算法0 引言随机抽题是在线考试系统中的核心部分,目前大部分的在线考试系统或无纸化考试系统大都采用了随机函数实现随机抽题,但大部分在线考试系统在随机抽题时存在抽题速度慢、试题覆盖面不稳定、重点不突出、灵活性差等问题。本文讨论了优化随机抽题的方法,给出了具体的抽题公式和查询语句。1 优化使用随机函数方法研究原始在线考试系统中,使用随机函数从题库中抽取试题,抽题公式为Int(Rnd*M)公式1。在抽取第一题时,直接将题号存放在指定的空数组中,表示抽取成功,以后每抽取一题,将题号和数组中已存在元素进行比较,若存在则抽取失败,若不存在则抽取成功,并将题号依次存储在该数组中,直到抽取结束。这种抽题

2、方法的缺陷是时间浪费。这种时间浪费在单机的时候并不明显,但在B/S模式或C/S模式下,机器越多速度越慢。为了解决重复抽题,避免试题抽取过慢,可采用分段法、分类法和分类分段结合法。1.1 分段法 分段法是解决重复抽题最简单的方法,其原理是将题库中的试题M分成N段,然后从每段中抽取一题,抽取公式为Int(Rnd*(MN)+i*(MN)(0iN-1)公式2。分段法的优点显而易见,可以完全杜绝试题重复抽取,但对题库中试题的数量有要求,即M>2N,且题库越大、试题数量越多,抽取效果就越好。在公式2中将M等分成N段,M并不一定能被N整除,也就是说采用公式2试题库最后M MOD N条试题永远不会被抽取

3、,为了解决这个问题,可将公式2进行改进,设L=M MOD N,则抽取公式为Int(Rnd*(MN+1)+i*(MN+1)(0iL-1)公式3和Int(Rnd*(MN)+i*(MN)+L(LiN-1)公式4。分段法避免了重复抽取,但无法控制试题的覆盖面及难易程度。1.2 1.2 分类法 分类法是在试题库的结构上添加相应分类字段,字段可以是章节、内容等,将所有试题按章节或内容分类,从每一类中抽取一题,不仅可以解决试题的重复抽取还可以控制试题的覆盖面。通常将分类字段的类型设置为整形,采用一组连续的整数作为分类字段的取值范围,这样方便在试题库中对分类进行循环查询,查询语句为select*from试题库

4、where分类字段名=i查询1,设查询记录数为Mi,则抽题公式为Int(Rnd*Mi)公式5。分类法可以保证试卷的覆盖面,但没有侧重点。1.3 1.3 分类分段结合法 分类分段结合法在抽取试题时先分类,然后根据设定给类分段,每类的分段数可以不同,从每个分段中抽取一题。这种方法要求在数据库中另建分类分段表,存贮每个分类中的抽题数量,数量可以是零,表示该类中不抽取,可以是大于零并小于该类题量的任何一个数Ni,表示将该类分成Ni段,每段抽取一题。从实现角度上看,分段法和分类法使用的是一维循环,分类分段法使用的是二维循环;从访问数据库角度看,分段法和分类法仅访问试题库,分类分段法除了访问试题库外还要访

5、问分类分段表。2 特殊要求下随机抽题的应对策略在实际应用中,会对试题的抽取有一些特殊的要求。如何合理利用随机函数,在同一个试题库中抽取出适合不同系别、专业使用的试卷?随机函数并不是万能的,不可能独立处理以上问题,但是可以创造一个环境,随机函数在这个环境中通过简单的计算公式和相应的算法为不同系别、专业抽取需求不同的试卷。为了营造这种环境,通常会通过两方面来实现:一方面是修改表结构;另一方面是提供一个界面可以针对不同系别、专业设计不同的抽题条件。2.1 修改表结构 修改表结构通常会在试题库中添加章、节、难度系数、出题日期、出题教师等字段。添加章、节字段既可以精确抽题范围,也可以避免抽到未学习的章节

6、。在抽取试题时针对完全学习的章和学习过部分小节的章可以采用不同的查询方法,对完全学习的章,可以仅对章字段进行查询:select*from试题库where章=k查询2,其中k为章数,对学习过部分小节的章,除了对章字段查询外还要对节进行查询,可以针对某一节进行查询:select*from试题库where章=k and节=j查询3,j为节数,也可以针对与所有学习过的小节:select*from试题库where章=k and节in(j1,j2,jn) 查询4,其中j1,j2,jn为该章中所有学习过的节数。难度系数字段可以根据系、专业学习的难易程度,抽取对应试题的字段,针对不同的章、节的学习程度不同可以

7、有不同的难度系数,以查询3为例查询可改为:select*from试题库where章=k and节=j and难度系数=i查询5,i为难度系数值。为了抽取方便,可以在试题库的表结构中添加出题日期字段,字段值为试题编辑日期,可以按日期的范围抽取出符合条件的试题。每个老师教学的重点会有差别,使用其他教师的试题可能难以评定学生的学习成果,可在试题库中加入命题教师字段,其值为命题教师工号,可以使用该字段为教师所带班级抽取试题。2.2 2.2 提供设置抽题条件界面 试题库虽然需要很多人不断的维护,但其表结构是相对稳定的,只是在题目数量和内容方面有所变化。但是作为使用在线考试系统的系部、专业,每一年、每一个

8、学期都会变化,他们的抽题要求不尽相同,因此,在考试系统的后台操作中需要一个设置系部、专业抽题要求的界面,在这个界面中可以通过简单的选择为每个系部、专业、班级设置若干抽题条件并存储在抽题条件数据表中。学生抽题时先判断学生的系部、专业、班级,然后从抽题条件数据表中读取对应的抽题要求,并将其转化成查询语句,在试题库中查出符合条件的试题进行抽取。3 交换算法在随机抽题中的应用在大部分在线考试系统中采用现场随机抽取,试题不完全相同;也有一部分考试系统中采用提前随机抽取,即在考试前由老师启动试题抽取程序,考试时所有的考生都使用这套试题,只是试题的顺序不同。作为现场随机抽取的方法前面已经讨论了,下面重点讨论提前随机抽取,提前随机抽取前半部分由老师抽取一套试题和现场抽取实现方法完全相同,后半部分是从抽取的试题当中使用随机函数重新抽取一遍以保证试题顺序不同。为了避免重复抽取,降低实现难度,有些考试系统在改变试题顺序时采用了随机函数结合交换算法的方法,设抽取的题目数量为M,将抽取的所有题号存储在数组中,下标从1到M,则抽题公式为j=Int(Rnd*M)+1公式6,使用循环For i=1toM,抽题公式放入循环,将下标为i的数组元素值和下标为j的数组元素值互换,这样可以得到一个新的试题排列4 结束语本文对随机抽题的方法进行了深入的研究。文中不仅

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论