陳運(yùn)財(cái)
摘要:本文討論了在線考試系統(tǒng)中優(yōu)化使用隨機(jī)函數(shù)的方法,深入研究了在特殊要求下隨機(jī)抽題的應(yīng)對策略,改進(jìn)了試題重新排列的算法。
關(guān)鍵詞:在線考試 隨機(jī)函數(shù) 隨機(jī)抽題
0 引言
隨機(jī)抽題是在線考試系統(tǒng)中的核心部分,目前大部分的在線考試系統(tǒng)或無紙化考試系統(tǒng)大都采用了隨機(jī)函數(shù)實(shí)現(xiàn)隨機(jī)抽題,但大部分在線考試系統(tǒng)在隨機(jī)抽題時(shí)存在抽題速度慢、試題覆蓋面不穩(wěn)定、重點(diǎn)不突出、靈活性差等問題。本文討論了優(yōu)化隨機(jī)抽題的方法,給出了具體的抽題公式和查詢語句。
1 優(yōu)化使用隨機(jī)函數(shù)方法研究
原始在線考試系統(tǒng)中,使用隨機(jī)函數(shù)從題庫中抽取試題,抽題公式為Int(Rnd*M)公式11。在抽取第一題時(shí),直接將題號存放在指定的空數(shù)組中,表示抽取成功,以后每抽取一題,將題號和數(shù)組中已存在元素進(jìn)行比較,若存在則抽取失敗,若不存在則抽取成功,并將題號依次存儲在該數(shù)組中,直到抽取結(jié)束。這種抽題方法的缺陷是時(shí)間浪費(fèi)。這種時(shí)間浪費(fèi)在單機(jī)的時(shí)候并不明顯,但在B/S模式或C/S模式下,機(jī)器越多速度越慢。為了解決重復(fù)抽題,避免試題抽取過慢,可采用分段法、分類法和分類分段結(jié)合法。
1.1 分段法 分段法是解決重復(fù)抽題最簡單的方法,其原理是將題庫中的試題M分成N段,然后從每段中抽取一題,抽取公式為Int(Rnd*(MN))+i*(MN)(0≤i≤N-1)公式2。分段法的優(yōu)點(diǎn)顯而易見,可以完全杜絕試題重復(fù)抽取,但對題庫中試題的數(shù)量有要求,即M>2N,且題庫越大、試題數(shù)量越多,抽取效果就越好。在公式2中將M等分成N段,M并不一定能被N整除,也就是說采用公式2試題庫最后M MOD N條試題永遠(yuǎn)不會(huì)被抽取,為了解決這個(gè)問題,可將公式2進(jìn)行改進(jìn),設(shè)L=M MOD N,則抽取公式為Int(Rnd*(MN+1))+i*(MN+1)(0≤i≤L-1)公式3和Int(Rnd*(MN))+i*(MN)+L(L≤i≤N-1)公式4。分段法避免了重復(fù)抽取,但無法控制試題的覆蓋面及難易程度。
1.2 分類法 分類法是在試題庫的結(jié)構(gòu)上添加相應(yīng)分類字段,字段可以是章節(jié)、內(nèi)容等,將所有試題按章節(jié)或內(nèi)容分類,從每一類中抽取一題,不僅可以解決試題的重復(fù)抽取還可以控制試題的覆蓋面。通常將分類字段的類型設(shè)置為整形,采用一組連續(xù)的整數(shù)作為分類字段的取值范圍,這樣方便在試題庫中對分類進(jìn)行循環(huán)查詢,查詢語句為select*from試題庫where分類字段名=i查詢1,設(shè)查詢記錄數(shù)為Mi,則抽題公式為Int(Rnd*Mi)公式5。分類法可以保證試卷的覆蓋面,但沒有側(cè)重點(diǎn)。
1.3 分類分段結(jié)合法 分類分段結(jié)合法在抽取試題時(shí)先分類,然后根據(jù)設(shè)定給類分段,每類的分段數(shù)可以不同,從每個(gè)分段中抽取一題。這種方法要求在數(shù)據(jù)庫中另建分類分段表,存貯每個(gè)分類中的抽題數(shù)量,數(shù)量可以是零,表示該類中不抽取,可以是大于零并小于該類題量的任何一個(gè)數(shù)Ni,表示將該類分成Ni段,每段抽取一題。從實(shí)現(xiàn)角度上看,分段法和分類法使用的是一維循環(huán),分類分段法使用的是二維循環(huán);從訪問數(shù)據(jù)庫角度看,分段法和分類法僅訪問試題庫,分類分段法除了訪問試題庫外還要訪問分類分段表。
2 特殊要求下隨機(jī)抽題的應(yīng)對策略
在實(shí)際應(yīng)用中,會(huì)對試題的抽取有一些特殊的要求。如何合理利用隨機(jī)函數(shù),在同一個(gè)試題庫中抽取出適合不同系別、專業(yè)使用的試卷?隨機(jī)函數(shù)并不是萬能的,不可能獨(dú)立處理以上問題,但是可以創(chuàng)造一個(gè)環(huán)境,隨機(jī)函數(shù)在這個(gè)環(huán)境中通過簡單的計(jì)算公式和相應(yīng)的算法為不同系別、專業(yè)抽取需求不同的試卷。為了營造這種環(huán)境,通常會(huì)通過兩方面來實(shí)現(xiàn):一方面是修改表結(jié)構(gòu);另一方面是提供一個(gè)界面可以針對不同系別、專業(yè)設(shè)計(jì)不同的抽題條件。
2.1 修改表結(jié)構(gòu) 修改表結(jié)構(gòu)通常會(huì)在試題庫中添加章、節(jié)、難度系數(shù)、出題日期、出題教師等字段。添加章、節(jié)字段既可以精確抽題范圍,也可以避免抽到未學(xué)習(xí)的章節(jié)。在抽取試題時(shí)針對完全學(xué)習(xí)的章和學(xué)習(xí)過部分小節(jié)的章可以采用不同的查詢方法,對完全學(xué)習(xí)的章,可以僅對章字段進(jìn)行查詢:select*from試題庫where章=k查詢2,其中k為章數(shù),對學(xué)習(xí)過部分小節(jié)的章,除了對章字段查詢外還要對節(jié)進(jìn)行查詢,可以針對某一節(jié)進(jìn)行查詢:select*from試題庫where章=k and節(jié)=j查詢3,j為節(jié)數(shù),也可以針對與所有學(xué)習(xí)過的小節(jié):select*from試題庫where章=k and節(jié)in(j1,j2,…jn) 查詢4,其中j1,j2,…jn為該章中所有學(xué)習(xí)過的節(jié)數(shù)。難度系數(shù)字段可以根據(jù)系、專業(yè)學(xué)習(xí)的難易程度,抽取對應(yīng)試題的字段,針對不同的章、節(jié)的學(xué)習(xí)程度不同可以有不同的難度系數(shù),以查詢3為例查詢可改為:select*from試題庫where章=k and節(jié)=j and難度系數(shù)=i查詢5,i為難度系數(shù)值。為了抽取方便,可以在試題庫的表結(jié)構(gòu)中添加出題日期字段,字段值為試題編輯日期,可以按日期的范圍抽取出符合條件的試題。每個(gè)老師教學(xué)的重點(diǎn)會(huì)有差別,使用其他教師的試題可能難以評定學(xué)生的學(xué)習(xí)成果,可在試題庫中加入命題教師字段,其值為命題教師工號,可以使用該字段為教師所帶班級抽取試題。
2.2 提供設(shè)置抽題條件界面 試題庫雖然需要很多人不斷的維護(hù),但其表結(jié)構(gòu)是相對穩(wěn)定的,只是在題目數(shù)量和內(nèi)容方面有所變化。但是作為使用在線考試系統(tǒng)的系部、專業(yè),每一年、每一個(gè)學(xué)期都會(huì)變化,他們的抽題要求不盡相同,因此,在考試系統(tǒng)的后臺操作中需要一個(gè)設(shè)置系部、專業(yè)抽題要求的界面,在這個(gè)界面中可以通過簡單的選擇為每個(gè)系部、專業(yè)、班級設(shè)置若干抽題條件并存儲在抽題條件數(shù)據(jù)表中。學(xué)生抽題時(shí)先判斷學(xué)生的系部、專業(yè)、班級,然后從抽題條件數(shù)據(jù)表中讀取對應(yīng)的抽題要求,并將其轉(zhuǎn)化成查詢語句,在試題庫中查出符合條件的試題進(jìn)行抽取。
3 交換算法在隨機(jī)抽題中的應(yīng)用
在大部分在線考試系統(tǒng)中采用現(xiàn)場隨機(jī)抽取,試題不完全相同;也有一部分考試系統(tǒng)中采用提前隨機(jī)抽取,即在考試前由老師啟動(dòng)試題抽取程序,考試時(shí)所有的考生都使用這套試題,只是試題的順序不同。作為現(xiàn)場隨機(jī)抽取的方法前面已經(jīng)討論了,下面重點(diǎn)討論提前隨機(jī)抽取,提前隨機(jī)抽取前半部分由老師抽取一套試題和現(xiàn)場抽取實(shí)現(xiàn)方法完全相同,后半部分是從抽取的試題當(dāng)中使用隨機(jī)函數(shù)重新抽取一遍以保證試題順序不同。為了避免重復(fù)抽取,降低實(shí)現(xiàn)難度,有些考試系統(tǒng)在改變試題順序時(shí)采用了隨機(jī)函數(shù)結(jié)合交換算法的方法,設(shè)抽取的題目數(shù)量為M,將抽取的所有題號存儲在數(shù)組中,下標(biāo)從1到M,則抽題公式為j=Int(Rnd*M)+1公式6,使用循環(huán)For i=1toM,抽題公式放入循環(huán),將下標(biāo)為i的數(shù)組元素值和下標(biāo)為j的數(shù)組元素值互換,這樣可以得到一個(gè)新的試題排列。
4 結(jié)束語
本文對隨機(jī)抽題的方法進(jìn)行了深入的研究。文中不僅討論了優(yōu)化使用隨機(jī)函數(shù)避免抽題重復(fù)的方法和滿足特殊抽題要求的應(yīng)對策略,而且在試題重新排列中引入了交換算法結(jié)合隨機(jī)函數(shù)。靈活運(yùn)用,可以設(shè)計(jì)出高效率、靈活性強(qiáng)、大覆蓋面、重點(diǎn)突出的抽題模塊。
參考文獻(xiàn):
[1]王宇穎,侯爽.題庫系統(tǒng)試卷自動(dòng)生成算法研究[D].哈爾濱工業(yè)大學(xué)學(xué)報(bào).2003年第35卷第3期.
[2]文嫻.試題庫系統(tǒng)智能組卷與試卷分析的研究[D].湖南師范大學(xué).2007年.
[3]李大輝.題庫系統(tǒng)的智能性分析與研究[J].哈爾濱師范大學(xué)自然科學(xué)學(xué)報(bào).2006年02期.
[4]張?jiān)铝?,祿樂濱,曹曉敏.一種組卷策略算法[J].微電子學(xué)與計(jì)算機(jī).2003.(6):18-20.
[5]賈振華,莊連英.淺談網(wǎng)上考試系統(tǒng)中自動(dòng)抽題的實(shí)現(xiàn)[J].大眾科技.2006年03期.
[6]劉亞瓊.基于加強(qiáng)學(xué)習(xí)的自動(dòng)組卷算法的研究[D];天津大學(xué).2006年.
[7]王燦輝.計(jì)算機(jī)自動(dòng)組卷算法研究[J].福州大學(xué)學(xué)報(bào).2001.29(增刊):8-10.
注:1.文中公式采用VB程序設(shè)計(jì)語言,并設(shè)題庫中共有試題數(shù)M、需抽取試題數(shù)N、隨機(jī)函數(shù)Rnd。