摘 要:網(wǎng)上考試是一種通過(guò)互聯(lián)網(wǎng)進(jìn)行的新的教育考核形式。隨機(jī)抽題算法是確保網(wǎng)上考試系統(tǒng)實(shí)現(xiàn)其主要功能的基礎(chǔ)性保障,在隨機(jī)性、快速性和不可重復(fù)性等方面有嚴(yán)格的要求。通過(guò)對(duì)各方面需求的分析,結(jié)合網(wǎng)上考試系統(tǒng)的實(shí)現(xiàn)技術(shù),詳細(xì)說(shuō)明了隨機(jī)抽題算法的具體流程。
關(guān)鍵詞:在線考試;隨機(jī)函數(shù);隨機(jī)抽題
中圖分類號(hào):TP
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1672-3198(2010)19-0335-02
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的快速發(fā)展和廣泛應(yīng)用,網(wǎng)上考試作為一種新的考試形式,在提高工作效率、促進(jìn)教考分離、共享考試資源等方面具備獨(dú)有的優(yōu)勢(shì),正在得到越來(lái)越多的教育培訓(xùn)機(jī)構(gòu)的青睞。在網(wǎng)上考試系統(tǒng)中能否實(shí)現(xiàn)滿足要求的隨機(jī)抽題組卷功能是決定系統(tǒng)優(yōu)劣的一個(gè)關(guān)鍵因素。
1 抽題算法需要考慮的問(wèn)題
網(wǎng)上考試系統(tǒng)是實(shí)現(xiàn)網(wǎng)上考試功能的主要途徑。目前流行的系統(tǒng)實(shí)現(xiàn)方式是采用客戶瀏覽器(Browser/Server,B/S)模式,即考生使用通用的網(wǎng)絡(luò)瀏覽器(如IE)通過(guò)Internet或Intranet登錄到網(wǎng)上考試系統(tǒng)的服務(wù)器上,在輸入考生信息并通過(guò)身份驗(yàn)證之后,由考試系統(tǒng)實(shí)時(shí)為該考生生成一套試卷,并通過(guò)瀏覽器進(jìn)行答題。答題結(jié)束后考生提交所做的答案并由考試系統(tǒng)自動(dòng)判卷,給出考試成績(jī)。在網(wǎng)上考試過(guò)程中,有一個(gè)關(guān)鍵的環(huán)節(jié),即必須實(shí)現(xiàn)能夠滿足系統(tǒng)要求的隨機(jī)抽題算法,從而為每位參加考試的考生生成一份符合預(yù)定要求的試卷,抽題必須同時(shí)照顧到公平、公正、隨機(jī)、效度、信度、區(qū)分度和難度。抽題算法需要考慮以下幾個(gè)方面的問(wèn)題。
1.1 不同題型的試題
試卷一般由幾種不同題型組成,每種題型的題目數(shù)量和所占分值由出題人員在系統(tǒng)中設(shè)置。假設(shè)題目包括判斷題、選擇題和問(wèn)答題。此處可以暫定各種題型數(shù)量的為:選擇題60道,每題1分,共60分;判斷題為20道,每題1分,共20分;問(wèn)答題為4道,每道5分,共20分。總分為100分,如圖所示:
1.2 不同范圍的試題
試卷對(duì)考試的內(nèi)容分布會(huì)根據(jù)具體考試要求的不同有所區(qū)別。這里采用的是分類法,處理的方式是在數(shù)據(jù)庫(kù)中為不同類型試題建立不同的表,且每個(gè)表中對(duì)試題設(shè)置一個(gè)字段zj(章節(jié)),如有六章,則字段值1-6。
1.3 不同難度的試題
試卷需要考慮的另一個(gè)問(wèn)題是試題難度的分布。試題庫(kù)中的每道試題都有一個(gè)難度系數(shù),每次考試所用的試卷也會(huì)根據(jù)具體要求指定試卷的難度,這主要是通過(guò)控制試卷中不同難度的試題數(shù)量比例來(lái)實(shí)現(xiàn)的。此處假定試題難度分為難、中、易三種難度,試卷中三種難度的試題數(shù)量可以由出題人員在系統(tǒng)中設(shè)置,如上圖所示。
2 隨機(jī)數(shù)生成算法的選擇
在網(wǎng)絡(luò)考試系統(tǒng)中,使用隨機(jī)函數(shù)從題庫(kù)中抽取試題,抽題公式為Int(Rnd* M)。在抽取第一題時(shí),直接將題號(hào)存放在指定的空數(shù)組中,表示抽取成功,以后每抽取一題,將題號(hào)和數(shù)組中已存在元素進(jìn)行比較,若存在則抽取失敗,若不存在則抽取成功,并將題號(hào)依次存儲(chǔ)在該數(shù)組中,直到抽取結(jié)束。這種抽題方法的缺陷是時(shí)間浪費(fèi)。這種時(shí)間浪費(fèi)在單機(jī)的時(shí)候并不明顯,但在B/S模式或C/S模式下,機(jī)器越多速度越慢。為了解決重復(fù)抽題,避免試題抽取過(guò)慢,可采用分段法、分類法和分類分段結(jié)合法。實(shí)現(xiàn)隨機(jī)抽題的首要條件是獲取符合要求的隨機(jī)數(shù),這是影響生成試卷質(zhì)量好壞的重要因素。
2.1 選擇隨機(jī)數(shù)生成算法的考慮因素
2.1.1 分布均勻
生成的隨機(jī)數(shù)是進(jìn)行隨機(jī)抽題的主要依據(jù)。考試系統(tǒng)的試題庫(kù)中一般都會(huì)有數(shù)量較多的各類試題,抽題算法必須保證試題庫(kù)中的每道試題被抽到的概率是相同的。所以生成的隨機(jī)數(shù)必須符合均勻分布。
2.1.2 生成速度快
由于網(wǎng)上考試系統(tǒng)是考生在網(wǎng)絡(luò)環(huán)境下通過(guò)瀏覽器實(shí)現(xiàn)考試,需要為每位考生實(shí)時(shí)生成滿足要求的試卷,因此要求試卷生成所用的時(shí)間不能太長(zhǎng)。這就需要選擇運(yùn)行時(shí)間較短的抽題算法,而生成隨機(jī)數(shù)在抽題組卷過(guò)程中占用時(shí)間比重較大,所以隨機(jī)數(shù)生成算法運(yùn)行速度必須滿足指定標(biāo)準(zhǔn)。
2.2 隨機(jī)數(shù)生成算法的確定
本系統(tǒng)隨機(jī)數(shù)生成算法采用分類分段結(jié)合法。需要使用的隨機(jī)數(shù)主要是介于1和指定數(shù)值間的隨機(jī)整數(shù),因此選用適當(dāng)?shù)碾S機(jī)數(shù)生成算法來(lái)生成指定范圍內(nèi)的隨機(jī)整數(shù)是隨機(jī)抽題算法的關(guān)鍵內(nèi)容之一。關(guān)鍵代碼如下。
'判斷題生成:
tktl=int(request(“tktl”))
if tktl<>0 then
sql=“select * from pd order by zj”
set rs=server.CreateObject(“ADODB.RecordSet”)
rs.open sql,conn,1。
'max是該試題的總數(shù)量:
max=rs.recordcount
'k為取定的隨機(jī)數(shù),即試題總數(shù)量除以出題量的整數(shù)值:
k=int(max/tktl)
i=0
counter=1
dim pdArray()
while i x0=int(rnd*k) rs.move i*k+x0,1 ReDim Preserve pdArray(i) pdArray(i)=rs(“ID”)。 3 隨機(jī)抽題算法的實(shí)現(xiàn) 隨機(jī)抽題的隨機(jī)性體現(xiàn)在兩個(gè)方面,一是隨機(jī)抽取每種題型每種范圍的試題中不同難度的試題;二是抽取出相應(yīng)的試題在試卷中的答案排列是隨機(jī)的。 3.1 隨機(jī)抽取試題 采用分段法,其原理是將題庫(kù)中的試題M 分成N段,然后從每段中抽取一題。首先將試題庫(kù)中所有同類型題目按章節(jié)進(jìn)行排序,并放入rs中,獲取其總題量max。取總題量除以設(shè)定題量值k為隨機(jī)數(shù),即假設(shè)有100道題,取10道題,k=100/10,就是把題目分為10段,每段取1道題。將生成的題號(hào)放入相應(yīng)的數(shù)組中。 3.2 隨機(jī)分配試題的答案排列 為了保證考試中出現(xiàn)相同試題時(shí),相鄰座位上看到的選項(xiàng)不一樣,有必要打亂試題的答案排列。具體做法是,首先將選擇題的四個(gè)選項(xiàng)的各種組合保存在數(shù)組x中,關(guān)鍵代碼如下: 生成一個(gè)隨機(jī)數(shù)來(lái)確定取該數(shù)組的某一行作為打亂后的答案排列順序,將答案順序、標(biāo)答和抽中的試題序號(hào)一并保存在數(shù)組中。關(guān)鍵代碼如下: 4 對(duì)該隨機(jī)算法的優(yōu)化 該算法簡(jiǎn)單,性能穩(wěn)定,經(jīng)考試實(shí)踐,能有效實(shí)現(xiàn)在線考試的要求。但也存在不足:抽題速度慢、試題覆蓋面不穩(wěn)、重點(diǎn)不突出等。下面討論了如何優(yōu)化該隨機(jī)抽題算法。 4.1 采用提前隨機(jī)抽題 采用提前隨機(jī)抽取,即在考試前由老師啟動(dòng)試題抽取程序,考試時(shí)所有的考生都使用這套試題,只是試題的順序不同。提前隨機(jī)抽取前半部分由出題人員抽取一套試題和上面介紹的抽題實(shí)現(xiàn)方法完全相同,后半部分是從抽取的試題當(dāng)中使用隨機(jī)函數(shù)重新抽取一遍,以保證試題順序不同。 4.2 增加更多約束字段 修改表結(jié)構(gòu)在試題庫(kù)中添加難度系數(shù)、出題日期、出題教師等字段。難度系數(shù)字段可以根據(jù)系、專業(yè)學(xué)習(xí)的難易程度,抽取對(duì)應(yīng)試題的字段,針對(duì)不同的章節(jié)的學(xué)習(xí)程度不同可以有不同的難度系數(shù),如查詢可改為:select from試題庫(kù)where章=k and 難度系數(shù)=j,j為難度系數(shù)值。為了抽取方便,可以在試題庫(kù)的表結(jié)構(gòu)中添加出題日期字段,字段值為試題編輯日期,可以按日期的范圍抽取出符合條件的試題。每個(gè)老師教學(xué)的重點(diǎn)會(huì)有差別,使用其他教師的試題可能難以評(píng)定學(xué)生的學(xué)習(xí)成果,可在試題庫(kù)中加入命題教師宇段,其值為命題教師工號(hào),可以使用該字段為教師所帶班級(jí)抽取試題。 4.3 設(shè)置更豐富的抽題條件界面 試題庫(kù)雖然需要很多人不斷的維護(hù),但其表結(jié)構(gòu)是相對(duì)穩(wěn)定的,只是在題目數(shù)量和內(nèi)容方面有所變化。但是作為使用在線考試系統(tǒng)的系部、專業(yè),每一年、每一個(gè)學(xué)期都會(huì)變化,他們的抽題要求不盡相同,因此,在考試系統(tǒng)的后臺(tái)操作中需要一個(gè)設(shè)置系部、專業(yè)抽題要求的界面,在這個(gè)界面中可以通過(guò)簡(jiǎn)單的選擇為每個(gè)系部、專業(yè)、班級(jí)設(shè)置若干抽題條件并存儲(chǔ)在抽題條件數(shù)據(jù)表中。學(xué)生抽題時(shí)先判斷學(xué)生的系部、專業(yè)、班級(jí),然后從抽題條件數(shù)據(jù)表中讀取對(duì)應(yīng)的抽題要求,并將其轉(zhuǎn)化成查詢語(yǔ)句,在試題庫(kù)中查出符合條件的試題進(jìn)行抽取。 5 結(jié)語(yǔ) 網(wǎng)上考試系統(tǒng)使考生可以通過(guò)Internet或Intranet進(jìn)行考試,由考試系統(tǒng)自動(dòng)隨機(jī)組卷生成試題,體現(xiàn)了考試過(guò)程的高效性、靈活性、科學(xué)性。隨機(jī)抽題算法則是網(wǎng)上考試系統(tǒng)中的關(guān)鍵部分,在隨機(jī)性、運(yùn)行速度和不可重復(fù)性等方面都有嚴(yán)格的要求。通過(guò)分析網(wǎng)上考試系統(tǒng)的實(shí)現(xiàn)技術(shù),本文詳細(xì)說(shuō)明了隨機(jī)抽題算法的具體流程,并在所開(kāi)發(fā)的網(wǎng)上考試系統(tǒng)中得到了應(yīng)用。 參考文獻(xiàn) [1]李大輝.題庫(kù)系統(tǒng)的智能性分析與研究[J].哈爾濱師范大學(xué)自然科學(xué)學(xué)報(bào),2006,(2). [2]賈振華,莊連英.淺談網(wǎng)上考試系統(tǒng)中自動(dòng)抽題的實(shí)現(xiàn)[J].大眾科技,2006,(3). [3]陳運(yùn)財(cái).在線考試系統(tǒng)中隨機(jī)抽題算法研究[J].科學(xué)實(shí)踐,2009:244.