2022年2022年计算机随机抽题算法 .pdf
《2022年2022年计算机随机抽题算法 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年计算机随机抽题算法 .pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、为了便于说明问题,文中提供的代码中的变量pd 为从题库中要抽取出来考试的试题数量,数据库表名与字段名我都使用了中文,并仅以判断题为例。算法一由于不知道如何实现从题库中随机抽取试题的sql语句,我在网上下载了几个免费的考试系统进行研究,找到了第一种算法,其思路为先将数据库中所有数据读出,获得试题的总数后,生成一个1(试题的总数考试的试题数量)之间的随机数,然后从这里开始读出数据: 、 select name=cate 对 错 这种算法基本上可以实现随机抽取试题,并让每个学生的试题和每一次刷新以后的试题都不相同,但是它的最大不足在于试题的先后顺序总是相同,特别是题库中试题不多的时候,学生几乎可以用
2、背答案方法来应付考试了。虽然可以通过改变数据的排序方式来改变试题的先后顺序,但变化总是不大。算法二第二种算法的思路很简单,就是不断生成1题库中的试题总数之间的随机数,然后到数据库中读取这条记录,直到满足考试的试题量为止。 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 11 页 - - - - - - - - - 、 select name=cate 对 错 这种算法应该是真正意义上的随机抽取试题,但是遗憾的是如果在题库中题量不多的情况下,很容易会在数据库中读取重复的试题
3、,如果再使用一个变量来储存已经读取过的试题id 来解决试题重复的问题,算法就过于繁琐,是很不可取的。算法二补充:第二种算法的思路很简单,就是不断生成1题库中的试题总数之间的随机数,然后到数据库中读取这条记录, 直到满足考试的试题量为止。当时我认为这种算法应该是真正意义上的随机抽取试题,但是遗憾的是如果在题库中题量不多的情况下,很容易会在数据库中读取重复的试题,虽然也可以再使用一个变量或数组来储存已经读取过的试题id 来解决试题重复的问题,算法就过于繁琐。为此,我片面地认为不可取的。其实用一个变量或数组来储存已经读取过的试题id ,在算法上并不繁琐。=r_count 名师资料总结 - - -精品
4、资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 11 页 - - - - - - - - - randomize x=fix(rnd*m_count)+1 产生 1m_count 的随机数if not instr(st,x)0 then st=st&x&, 用 , 分割i=i+1 end if if i=m_count then exit do 如果 m_count 小于 r_count将出现死循环,于是判断并跳出循环loop rndtest=st end function set rs=serve
5、r.CreateObject(ADODB.RecordSet) sql=select * from 判断题 order by id asc rs.open sql,conn,1,1 mycound =rndtest(rs.Recordcount, pd) 取得题库中的试题总数testcound=split(mycound, ) for i=0 to UBound(testcound) rs.absoluteposition=matrix(i) 把记录指针移指向第testcound (i)条记录session(pdda)=session(pdda)&rs(正确答案 )&| 用 session来记
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年计算机随机抽题算法 2022 计算机 随机 算法
限制150内