王瑞鋒
【摘 要】隨著教育信息化的進步,各種考試系統(tǒng)的應(yīng)用已經(jīng)廣泛,其中系統(tǒng)中包括的組卷算法越來越重要,本文結(jié)合單位實際對隨機組卷算法進行了分析和設(shè)計。
【關(guān)鍵詞】隨機組卷;算法;考試系統(tǒng)
智能組卷是考試系統(tǒng)的核心功能之一,智能組卷就是指考試系統(tǒng)從題庫中抽取試題,需要滿足教師或?qū)W生需求的考試試卷。在當(dāng)今教學(xué)環(huán)境中,教師或?qū)W生希望能夠在較短的時間內(nèi)組合成一份或若干份既符合需求,又具有隨機性的試卷。所以智能組卷的研究的重點在于組卷算法。
一、常見的組卷算法有:隨機組卷法、回溯法、遺傳算法三種
1.隨機法
隨機法是指依據(jù)已經(jīng)確定的試卷標(biāo)準(zhǔn)進行隨機抽取試題,最終組合成試卷的算法,它是組卷算法中最為常見的算法。隨機法是通過抽調(diào)過程的不斷重復(fù),直至組卷過程的完成或者無法抽取滿足用戶需求試題為止[1]。
用隨機法進行組卷,其過程比較簡單,但其具有不可回溯的性質(zhì),是依據(jù)當(dāng)前的試卷標(biāo)準(zhǔn)來選擇試題。隨機算法雖然簡單,但在一定的條件控制下,如題庫數(shù)量較少,抽取試卷要求少就可以選擇出滿足需求的試卷[2],同時使用隨機法進行組卷可以通過均勻選取方式體現(xiàn)試卷的公正性,更好的避免作弊。
2.回溯法
回溯法屬于深度優(yōu)先算法的一種,是對隨機算法的一種改進。回溯法隨機抽取第一狀態(tài),并記錄下來,當(dāng)搜索失敗后,釋放上次記錄的狀態(tài)類型,然后通過來回不斷的回溯試探,直到組卷的完成[3]。
3.遺傳算法
遺傳算法是現(xiàn)在比較新興和流行的一種組卷算法,遺傳算法由于其自適應(yīng)和良好的搜索技術(shù)得以流行開來。它是模擬生物界的自然選擇和遺傳變異的機制來求解復(fù)雜問題的隨機搜索和優(yōu)化算法[4]。遺傳算法對于復(fù)雜和非線性的問題可以較好的解決,在機器學(xué)習(xí)、組合優(yōu)化等方面得到了廣泛的應(yīng)用。由于遺傳算法的核心思想也是在一定的要求下找到最佳的方案,這和智能組卷算法的本質(zhì)是一樣的。
在隨機算法、回溯算法和遺傳算法中,雖然社會上認(rèn)為遺傳算法是比較先進的,但通過對比在一個小型考試系統(tǒng)中隨機算法比回溯法遺傳算法更容易實現(xiàn),效率也不低。這是因為隨機算法成卷率高,且試卷質(zhì)量相對較好?;厮菟惴ê瓦z傳算法是在組卷模式確定后,然后這個模式進行成卷,這樣會導(dǎo)致對試題查找范圍比較特點的問題。
二、題庫設(shè)計
三、組卷要求
本單位的考試系統(tǒng)的組卷根據(jù)需要有標(biāo)準(zhǔn)組卷和自定義組卷兩種,在設(shè)計過程中,自定義組卷的功能實際包括了標(biāo)準(zhǔn)組卷的要求,所以在這里我們只分析自定義組卷過程,在此過程中系統(tǒng)提供了題庫中的信息,及自定義組卷的選項。包括:按教材章節(jié)、題型、難易比例、數(shù)目數(shù)量等組卷選項。
四、隨機組卷算法實現(xiàn)
隨機組卷思路:
(1)用戶輸入自定義試卷要求:考試章節(jié)、題型數(shù)量。
(2)從題庫中查詢用戶要求題庫是否能滿足。如能則繼續(xù)下一步,不能給出錯誤提示,終止組卷。
(3)從題庫中抽取所有滿足第1個題型的題目ID保存到數(shù)組。
(4)從該數(shù)組中隨機抽取滿足要求數(shù)量的題目ID,可按試題難度比例進行篩選。
(5)將抽取的題目ID保存生成的試卷表中。
(6)重復(fù)3-5步,直到將所有題型抽取完畢。
(7)根據(jù)試卷表的題目ID從題庫中抽取對應(yīng)的題目,組卷完成。
五、算法的實現(xiàn)
這里只列出隨機組卷的算法的方法,其它相關(guān)方法:如信息提示的進程略過。
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(quan quan1=rn.nextInt(lastline); random[quan]=id[quan1]; for(int k=0;k if(!other){continue;} quan++;} String sql="INSERT INTO temp_test(chapters_id,test_diff,test_score,test_type,test_subject,answer_key) SELECT chapters_id,test_diff,test_score,test_type,test_subject,answer_key FROM "+Studenttest_choose.obje_student+" WHERE test_id="+random[0]; try{for(int k=0;k test_subject,answer_key FROM "+Student- test_choose.obje_student+" WHERE test_id="+random[k]); pssql.executeUpdate(); } } catch(SQLException se){JOptionPane.showMessageDialog(null,”組卷算法錯誤!”,”錯誤”,JOptionPane.ERROR_MESSAGE);} } } 六、結(jié)論 在進行系統(tǒng)設(shè)計時,不能盲目的進行,一定從該系統(tǒng)實際出發(fā),選擇適合的算法,先進的算法不一定是適合本系統(tǒng)的,在本系統(tǒng)幾千道題目的題庫中使用隨機算法運行良好。 參考文獻(xiàn): [1]葉曉彤等.基于校園網(wǎng)的考試管理系統(tǒng)體系的構(gòu)建[J].計算機系統(tǒng)應(yīng)用,2003,10:120-123. [2]周麗莉.基于B/S結(jié)構(gòu)的等級考試管理系統(tǒng)[J].計算機工程,2005.4:195-197. [3]羅鈁.高校體育招生考試管理信息系統(tǒng)的設(shè)計與應(yīng)用[J].體育科學(xué)研究,2006,10(2):71-74. [4]杜汀.網(wǎng)絡(luò)考試管理信息系統(tǒng)[J].中央民族大學(xué)學(xué)報(自然科學(xué)版),2005,1:86-88.