基于双向循环链表分段随机组卷算法.docVIP

基于双向循环链表分段随机组卷算法.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于双向循环链表分段随机组卷算法

基于双向循环链表分段随机组卷算法   摘要:针对计算机组卷中试题被重复抽取造成的执行效率低问题,提出了一种分段随机组卷算法。采用双向循环链表结构表示随机数的生成区间,通过已生成的随机数和随机步长值确定下一个随机数的独立生成区间。初始生成区间利用保存试题编号的数组下标集合获得。实验结果表明了本算法的可行性。与传统随机组卷算法相比,该算法随机选题时不需要频繁访问题库,并具有较高的执行效率。   关键词:分段随机; 双向循环链表;随机数;组卷;生成区间   中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2012)33-8021-05   在课程自动化考核过程中,计算机自动组卷是其中的一个重要功能。自动组卷的实现多采用随机选取法并结合回溯试探的方法。随机选取法就是根据命题人提供的组卷指标由计算机程序从题库中随机选择一定数量的试题构成试卷。在这样的组卷过程中,由于试题的选取具有不确定性,通常利用回溯试探方法解决试题被重复抽取的问题。这种方法在题库中题量较多或组卷数量较大的情况下,耗费时间长,组卷成功率不高。   采用分段随机抽选法[1]和集合随机抽选法[2-3]将题库空间分段,通过缩小试题搜索的匹配范围可提高组卷效率和成功率,但这些组卷方法依赖试题数据库结构上的支持,尚未克服试题被重复抽取的缺陷。此外,基于遗传算法和模拟退火算法的组卷方法[4-5]对内存占用量大,运行时间长[6]。另有研究发现,虽然在题库中设置试题选中标识[7-8]可避免试题被重复抽取,但需长时间访问题库,增加了系统负担。   针对上述问题,该文提出一种新的随机组卷算法。采用双向循环链表结构表示随机数的生成区间。通过动态界定随机生成区间从根本上解决试题被重复抽取的难题。整个组卷过程不需要频繁访问数据库。实验测试结果表明了该算法是可行的。   1 算法描述   1.1 传统随机组卷算法[3]   传统随机组卷算法是利用随机函数在试题库中抽取符合要求的试题组成试卷,其过程是:生成一个不重复的随机数之后,以该随机数为试题编号到题库中选取试题,如果试题库中不存在以该随机数为试题编号的题目,则需要重新生成一个随机数继续选取试题。如果仍然找不到新随机数所对应的题目则必须再生成新的随机数,而且每次尝试都必须通过访问数据库来确定是否成功,反复调用随机函数的时间、进行比较的时间以及多次访问数据库的时间等累加起来,使得程序的效率大为降低。   1.2 分段随机组卷算法   为了解决传统随机组卷算法反复地回溯匹配的问题,需要考虑的是如何缩小搜寻匹配的范围以及随机数的非重复生成。任何组卷方法都是从试题库中按照一定的组卷指标和规则选取出指定数量的试题构成试卷。基于这个思想,将计算机自动组卷分成两步:第一步依据组卷指标筛选出候选试题,这个操作可借助于SQL语句完成;第二步从候选试题中随机抽取指定数量的试题,这一步是本算法的重点。   该文提出的分段随机组卷算法是在候选题库空间分段抽取试题,随机确定每一次抽题范围,且每次抽题范围相互独立;每段只随机选取一题,以便提高组卷效率。这里我们利用一个双向循环链表结构表示随机数的生成区间,并通过当前随机数和随机步长值随机确定下一个随机数的独立生成区间,使试题的重复抽取得以避免。   1.2.1 随机数的生成   候选题库的更新会影响试题编号的连续性,通过在试题库表中增加“随机数”字段可保证随机数产生区间的有效性[1-3]。这样做增加了数据库的存储及维护负担。该文用数组保存候选试题编号,并用数组下标集合作为随机数产生区间。随机数Rnd的生成公式:   在公式(1)中,Random为系统内部的随机函数,可产生0至1之间的随机小数。Start和Last分别表示数组下标的起止边界值。[…]为遵循四舍五入规则的取整运算。显然,[Rnd∈[Start,Last]]。   1.2.2 独立随机区间的生成   根据公式(1)可知,随机数的产生依赖于区间[[Start,Last]]。为了避免产生重复的随机数,根本的解决方法是为每个随机数提供独立的生成区间,即区间端点Start和Last的值在每个随机数生成之前应做相应的改变。这种改变与当前已生成的随机数Rnd相关,如公式(2)。   [Rnd(Last-Start)/2] (2)   公式(2)成立表示Rnd代表的点位于当前区间的左半部分,则在[[Start,Last]]的左半区间为下一个随机数寻找一个随机生成区间,否则在[[Start,Last]]的右半区间寻找一个随机生成区间。这需要由公式(3)生成一个随机步长值p。   [p=Random×i,1i Rnum] (3)   公式(2)中的Rnum表示随机数的数目,即抽取试题的个数。[…]的含义同公式(1)。

文档评论(0)

3471161553 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档