网上考试系统中随机抽题算法

更新时间:2024-02-29 作者:用户投稿原创标记本站原创 点赞:18301 浏览:82116

摘 要:网上考试是一种通过互联网进行的新的教育考核形式.随机抽题算法是确保网上考试系统实现其主要功能的基础性保障,在随机性、快速性和不可重复性等方面有严格的要求.通过对各方面需求的分析,结合网上考试系统的实现技术,详细说明了随机抽题算法的具体流程.

关 键 词 :在线考试,随机函数,随机抽题

中图分类号:TP

文献标识码:A

文章编号:1672-3198(2010)19-0335-02

随着计算机网络技术的快速发展和广泛应用,网上考试作为一种新的考试形式,在提高工作效率、促进教考分离、共享考试资源等方面具备独有的优势,正在得到越来越多的教育培训机构的青睐.在网上考试系统中能否实现满足要求的随机抽题组卷功能是决定系统优劣的一个关键因素.

1.抽题算法需要考虑的问题

网上考试系统是实现网上考试功能的主要途径.目前流行的系统实现方式是采用客户浏览器(Browser/Server,B/S)模式,即考生使用通用的网络浏览器(如IE)通过Inter或Intra登录到网上考试系统的怎么写作器上,在输入考生信息并通过身份验证之后,由考试系统实时为该考生生成一套试卷,并通过浏览器进行答题.答题结束后考生提交所做的答案并由考试系统自动判卷,给出考试成绩.在网上考试过程中,有一个关键的环节,即必须实现能够满足系统要求的随机抽题算法,从而为每位参加考试的考生生成一份符合预定要求的试卷,抽题必须同时照顾到公平、公正、随机、效度、信度、区分度和难度.抽题算法需要考虑以下几个方面的问题.

1.1 不同题型的试题

试卷一般由几种不同题型组成,每种题型的题目数量和所占分值由出题人员在系统中设置.检测设题目包括判断题、选择题和问答题.此处可以暂定各种题型数量的为:选择题60道,每题1分,共60分,判断题为20道,每题1分,共20分,问答题为4道,每道5分,共20分.总分为100分,如图所示:

1.2 不同范围的试题

试卷对考试的内容分布会根据具体考试要求的不同有所区别.这里采用的是分类法,处理的方式是在数据库中为不同类型试题建立不同的表,且每个表中对试题设置一个字段zj(章节),如有六章,则字段值1-6.

1.3 不同难度的试题

试卷需要考虑的另一个问题是试题难度的分布.试题库中的每道试题都有一个难度系数,每次考试所用的试卷也会根据具体要求指定试卷的难度,这主要是通过控制试卷中不同难度的试题数量比例来实现的.此处检测定试题难度分为难、中、易三种难度,试卷中三种难度的试题数量可以由出题人员在系统中设置,如上图所示.

2.随机数生成算法的选择

在网络考试系统中,使用随机函数从题库中抽取试题,抽题公式为Int(Rnd* M).在抽取第一题时,直接将题号存放在指定的空数组中,表示抽取成功,以后每抽取一题,将题号和数组中已存在元素进行比较,若存在则抽取失败,若不存在则抽取成功,并将题号依次存储在该数组中,直到抽取结束.这种抽题方法的缺陷是时间浪费.这种时间浪费在单机的时候并不明显,但在B/S模式或C/S模式下,机器越多速度越慢.为了解决重复抽题,避免试题抽取过慢,可采用分段法、分类法和分类分段结合法.实现随机抽题的首要条件是获取符合要求的随机数,这是影响生成试卷质量好坏的重要因素.

2.1 选择随机数生成算法的考虑因素

2.1.1 分布均匀

生成的随机数是进行随机抽题的主要依据.考试系统的试题库中一般都会有数量较多的各类试题,抽题算法必须保证试题库中的每道试题被抽到的概率是相同的.所以生成的随机数必须符合均匀分布.

2.1.2 生成速度快

由于网上考试系统是考生在网络环境下通过浏览器实现考试,需要为每位考生实时生成满足要求的试卷,因此要求试卷生成所用的时间不能太长.这就需要选择运行时间较短的抽题算法,而生成随机数在抽题组卷过程中占用时间比重较大,所以随机数生成算法运行速度必须满足指定标准.

2.2 随机数生成算法的确定

本系统随机数生成算法采用分类分段结合法.需要使用的随机数主要是介于1和指定数值间的随机整数,因此选用适当的随机数生成算法来生成指定范围内的随机整数是随机抽题算法的关键内容之一.关键代码如下.

'判断题生成:

tktl等于int(request(“tktl”))

if tktl<>0 then

sql等于“select * from pd order by zj”

set rs等于server.CreateObject(“ADODB.RecordSet”)

rs.open sql,conn,1.

'max是该试题的总数量:

max等于rs.recordcount

'k为取定的随机数,即试题总数量除以出题量的整数值:

k等于int(max/tktl)

i等于0

counter等于1

dim pdArray()

while i

x0等于int(rnd*k)

rs.move i*k+x0,1

ReDim Preserve pdArray(i)

pdArray(i)等于rs(“ID”).

3.随机抽题算法的实现

随机抽题的随机性体现在两个方面,一是随机抽取每种题型每种范围的试题中不同难度的试题,二是抽取出相应的试题在试卷中的答案排列是随机的.

3.1 随机抽取试题

采用分段法,其原理是将题库中的试题M 分成N段,然后从每段中抽取一题.首先将试题库中所有同类型题目按章节进行排序,并放入rs中,获取其总题量max.取总题量除以设定题量值k为随机数,即检测设有100道题,取10道题,k等于100/10,就是把题目分为10段,每段取1道题.将生成的题号放入相应的数组中.

3.2 随机分配试题的答案排列

为了保证考试中出现相同试题时,相邻座位上看到的选项不一样,有必要打乱试题的答案排列.具体做法是,首先将选择题的四个选项的各种组合保存在数组x中,关键代码如下:

生成一个随机数来确定取该数组的某一行作为打乱后的答案排列顺序,将答案顺序、标答和抽中的试题序号一并保存在数组中.关键代码如下:

4.对该随机算法的优化

该算法简单,性能稳定,经考试实践,能有效实现在线考试的要求.但也存在不足:抽题速度慢、试题覆盖面不稳、重点不突出等.下面讨论了如何优化该随机抽题算法.

4.1 采用提前随机抽题

采用提前随机抽取,即在考试前由老师启动试题抽取程序,考试时所有的考生都使用这套试题,只是试题的顺序不同.提前随机抽取前半部分由出题人员抽取一套试题和上面介绍的抽题实现方法完全相同,后半部分是从抽取的试题当中使用随机函数重新抽取一遍,以保证试题顺序不同.

4.2 增加更多约束字段

修改表结构在试题库中添加难度系数、出题日期、出题教师等字段.难度系数字段可以根据系、专业学习的难易程度,抽取对应试题的字段,针对不同的章节的学习程度不同可以有不同的难度系数,如查询可改为:select from试题库where章等于k and 难度系数等于j,j为难度系数值.为了抽取方便,可以在试题库的表结构中添加出题日期字段,字段值为试题编辑日期,可以按日期的范围抽取出符合条件的试题.每个老师教学的重点会有差别,使用其他教师的试题可能难以评定学生的学习成果,可在试题库中加入命题教师宇段,其值为命题教师工号,可以使用该字段为教师所带班级抽取试题.

4.3 设置更丰富的抽题条件界面

试题库虽然需要很多人不断的维护,但其表结构是相对稳定的,只是在题目数量和内容方面有所变化.但是作为使用在线考试系统的系部、专业,每一年、每一个学期都会变化,他们的抽题要求不尽相同,因此,在考试系统的后台操作中需要一个设置系部、专业抽题要求的界面,在这个界面中可以通过简单的选择为每个系部、专业、班级设置若干抽题条件并存储在抽题条件数据表中.学生抽题时先判断学生的系部、专业、班级,然后从抽题条件数据表中读取对应的抽题要求,并将其转化成查询语句,在试题库中查出符合条件的试题进行抽取.


5.结语

网上考试系统使考生可以通过Inter或Intra进行考试,由考试系统自动随机组卷生成试题,体现了考试过程的高效性、灵活性、科学性.随机抽题算法则是网上考试系统中的关键部分,在随机性、运行速度和不可重复性等方面都有严格的要求.通过分析网上考试系统的实现技术,本文详细说明了随机抽题算法的具体流程,并在所开发的网上考试系统中得到了应用.