资源描述:
《在线考试系统随机抽题的改进》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、在线考试系统随机抽题的改进:开发在线考试系统时,会遇到随机性抽题的问题。在分析常用的抽题算法后,试从种子唯一性角度来改进设计,这一思路也可用于其他利用VisualC#和SQLServer开发X络程序需要获取唯一随机序列的地方。实验表明,改进后的方案抽题分布相对均匀。 关键词:随机;唯一性;IP;时间 :TP311:A:1009-3044(2011)11-2605-02 TheImprovementoftheExaminationOnlineSystem'sRandomFunction XUHo
2、ng-ying,LIJie (SchoolofMathematicalandputerSciences,XiangfanUniversity,Xiangfan441053,China) Abstract:Randomquestionselectionisadifficultfunctionoftheexaminationonlinesystem.Thispaperintendstoimprovethisfunctionfromtheseed.Thisideaisalsosuitableforoth
3、erssequenceisneeded.Thesimulationresultsho;uniqueness;IP;time 在开发在线考试系统时,会遇到一个关键问题:如何随机抽题。具体来说,就是如何从已存储试题的数据库中随机抽出指定数目的不同试题,并在页面呈现出来。 1随机抽题分析 在.frame.Random类,这个类属于自动导入的System命名空间,在ASP.中可以直接使用这个类。利用该类可以在程序中产生所谓的”伪随机数”。System.Random类中的NextDouble方法、Next
4、Bytes方法和Next方法都可以产生随机数。NextDouble方法产生一个介于0.0和1.0之间的随机数,且随机数有可能相同;NextBytes方法能产生一个数组,但不能限定已产生的数组中每个元素都在指定的范围内;Next方法可以利用两个参数(intMinValue,intMaxValue)产生指定个数的在指定范围内的数,该方法被两次重载,分别为:”Next(intMaxValue)”用来取得小于”MaxValue”的非负随机数,”Next()”用来取得任一个非负随机数,但不能确定数字互不相同,可
5、以使用循环结构产生指定数目的一组数字,在循环过程中可以把每一次产生的数字和已产生的数字进行比较,这样就可以得到指定数目的一组互不相同的随机非负整数。 还有比较常用的一种方法:利用SQL的neote_Addr"].ToString().Split('.'); //获得当前时刻(取从第6位到最后的字符) strings1=(DateTime.No; publicstringdifferSamenessRandomNum(intnum,intminValue,intmaxValue) //在区间[
6、minValue,maxValue]取出num个互不相同的随机数,返回数组。 { string[]sArray=Request.ServerVariables["remote_Addr"].ToString().Split('.'); strings1=(DateTime.Nora=ne(unchecked((int)k));//保证产生的数字的随机性 arrNum=ne]; inttmp=0; for(inti=0;i<=num-1;i++) {tmp=ra.Next(minValue
7、,maxValue);//随机取数 arrNum[i]=getRandomNum(arrNum,tmp,minValue,maxValue,ra);}//取出值赋到数组中 strings=""; for(inti=0;i8、tn=0; .Length-1) {if(arrNum[n]==tmp)//利用循环判断是否有重复 {tmp=ra.Next(minValue,maxValue);//重新随机获取。 getRandomNum(arrNum,tmp,minValue,maxValue,ra);} n++;} returntmp;} 即可保证抽到题目各不相同。 3测试效果 我们利用100个学生在100道题中选取5个题做测试,得到题目被选取曲线如图1~图2所