简单随机组卷算法设计.docVIP

  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文档。上传文档
查看更多
简单随机组卷算法设计.doc

简单随机组卷算法设计   【摘 要】随着教育信息化的进步,各种考试系统的应用已经广泛,其中系统中包括的组卷算法越来越重要,本文结合单位实际对随机组卷算法进行了分析和设计。   【关键词】随机组卷;算法;考试系统   智能组卷是考试系统的核心功能之一,智能组卷就是指考试系统从题库中抽取试题,需要满足教师或学生需求的考试试卷。在当今教学环境中,教师或学生希望能够在较短的时间内组合成一份或若干份既符合需求,又具有随机性的试卷。所以智能组卷的研究的重点在于组卷算法。   一、常见的组卷算法有:随机组卷法、回溯法、遗传算法三种   1.随机法   随机法是指依据已经确定的试卷标准进行随机抽取试题,最终组合成试卷的算法,它是组卷算法中最为常见的算法。随机法是通过抽调过程的不断重复,直至组卷过程的完成或者无法抽取满足用户需求试题为止[1]。   用随机法进行组卷,其过程比较简单,但其具有不可回溯的性质,是依据当前的试卷标准来选择试题。随机算法虽然简单,但在一定的条件控制下,如题库数量较少,抽取试卷要求少就可以选择出满足需求的试卷[2],同时使用随机法进行组卷可以通过均匀选取方式体现试卷的公正性,更好的避免作弊。   2.回溯法   回溯法属于深度优先算法的一种,是对随机算法的一种改进。回溯法随机抽取第一状态,并记录下来,当搜索失败后,释放上次记录的状态类型,然后通过来回不断的回溯试探,直到组卷的完成[3]。   3.遗传算法   遗传算法是现在比较新兴和流行的一种组卷算法,遗传算法由于其自适应和良好的搜索技术得以流行开来。它是模拟生物界的自然选择和遗传变异的机制来求解复杂问题的随机搜索和优化算法[4]。遗传算法对于复杂和非线性的问题可以较好的解决,在机器学习、组合优化等方面得到了广泛的应用。由于遗传算法的核心思想也是在一定的要求下找到最佳的方案,这和智能组卷算法的本质是一样的。   在随机算法、回溯算法和遗传算法中,虽然社会上认为遗传算法是比较先进的,但通过对比在一个小型考试系统中随机算法比回溯法遗传算法更容易实现,效率也不低。这是因为随机算法成卷率高,且试卷质量相对较好。回溯算法和遗传算法是在组卷模式确定后,然后这个模式进行成卷,这样会导致对试题查找范围比较特点的问题。   二、题库设计   三、组卷要求   本单位的考试系统的组卷根据需要有标准组卷和自定义组卷两种,在设计过程中,自定义组卷的功能实际包括了标准组卷的要求,所以在这里我们只分析自定义组卷过程,在此过程中系统提供了题库中的信息,及自定义组卷的选项。包括:按教材章节、题型、难易比例、数目数量等组卷选项。   四、随机组卷算法实现   随机组卷思路:   (1)用户输入自定义试卷要求:考试章节、题型数量。   (2)从题库中查询用户要求题库是否能满足。如能则继续下一步,不能给出错误提示,终止组卷。   (3)从题库中抽取所有满足第1个题型的题目ID保存到数组。   (4)从该数组中随机抽取满足要求数量的题目ID,可按试题难度比例进行筛选。   (5)将抽取的题目ID保存生成的试卷表中。   (6)重复3-5步,直到将所有题型抽取完毕。   (7)根据试卷表的题目ID从题库中抽取对应的题目,组卷完成。   五、算法的实现   这里只列出随机组卷的算法的方法,其它相关方法:如信息提示的进程略过。   public void choo(int quantity){   try{id=new int[lastline];   rrs.beforeFirst();   int n=0;   while(rrs.next()){   id[n]=rrs.getInt(1);   n++; } }   catch(SQLException se){JOptionPane.showMessageDialog(null,”生成试卷错误!”,”错误”,JOptionPane.ERROR_MESSAGE);}   int random[]=new int[quantity];   Random rn=new java.util.Random();   int quan=0;   boolean other;   int quan1;   quan1=rn.nextInt(lastline);   while(quanquantity){other=true;   quan1=rn.nextInt(lastline);   random[quan]=id[quan1];   for(int k=0;kquan;k++){ if(random[k]==random[quan]){other=false;}}

文档评论(0)

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

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

1亿VIP精品文档

相关文档