司 飆
(滇西科技師范學院信息科學與技術系,云南臨滄 677000)
網絡化考試作為一種高效、準確、嚴肅的考試形式逐漸替代傳統筆試,被高校課改、培訓機構等廣泛應用。在網絡化考試系統中能否實現滿足要求的隨機抽題組卷功能,實現一人一卷、重復率低是決定系統優劣的一個關鍵因素〔1-5〕。
本文研究背景是基于Java Web技術的MVC模式下的校園網考試平臺設計,在系統業務邏輯完備的基礎上研究隨機抽題的形態和產生過程,從而提高系統性能。通過本文的理論分析,也可以把此方法推廣到其他的考試系統中,跨越開發語言的局限,為后續的研究提出思考。
為了更透徹地研究隨機抽題的重復率、平均分布等主要問題,本研究簡化了題目類型、數據庫調用等業務邏輯部分,把數據庫題庫資源抽象為簡單的數字序列,分析題庫序列抽取過程,并對抽取結果的重復率、序列分布情況等方面展開研究,通過分析實驗采樣結果,推導更加優化的隨機抽題策略〔6-12〕。
2.1 問題抽象 在給定樣本空間M內,隨機抽取N個數量,重復抽取K次,每次抽取中,N(i)不能重復。
2.2 問題分析 當M趨于無窮大時,即M>=N×K,N(i)的重復率基本趨于平均分布,可達到每個K里面的N(i)都不重復的狀態,但是當M<N×K時,N(i)的重復分布并不均勻。需要設計一種算法,能夠在有限個M中,抽取N個數時,降低N(i)的重復次數?;蛘哒f,當M、N、K3個量固定的前提下,能夠有效地降低N(i)的重復次數。
在實際的考試實施中,題庫數量總是有限的,并且建立題庫數量是一個漫長的過程,所以降低N(i)的重復次數很有必要。
2.3 決定N(i)重復次數的因素 ①在每場考生數量K確定的情況下,樣本空間M的范圍,和抽取量N影響重復率,即M越大,N越小,重復率不高,反之則重復率增高;②在題庫數量M和抽題數N確定的情況下,考生數量K影響重復率,K值增加,則會導致N(i)的重復次數增加。
2.4 預期結果 通過實驗,應該得到M、N、K三者的比例關系,即三者之間應該達到怎樣的比例狀態時,隨機數重復分布是最佳的。通俗的理解為設計出低重復率的考卷抽題策略。
實驗采用Java面向對象技術建模,如圖1所示,Rdm類是主要的隨機抽題類,app類是用于實現Rdm類的入口程序。

圖1 隨機抽題采樣模型
Rdm類構建了主要的隨機抽題邏輯,完成了探測隨機數、抽題、采樣、統計、顯示結果等功能。其中:
a[]數據用于記錄每套組卷抽題的序列N。
b[][2]數組用于記錄樣本空間M,第一維記錄題庫樣本序列,第二維用于記錄對應序列的抽取次數,即重復的次數。
1 mol酯可以水解成1 mol酸,由于總酸和總酯的質量濃度是以乙酸和乙酸乙酯來計[8],乙酸乙酯與乙酸的相對分子質量之比(88.12∶60.06)為1.467,即水解消耗的酯和水解生產的酸的質量之比應該是1.467。
Rdm(intm,intn)構造方法用于調用初始化方法來設定數組a和數組b的規模。
createRdm(intn,intm)方法用于完成抽題采樣工作,不包括限定條件。
createRdmD(intn,intm,intk,int upLimited)方法是createRdm()方法的改進策略,完成主要的抽題采樣工作,根據參數n的要求,在參數m的范圍內生成隨機數,采樣到數組a中,并滿足上限upLimited的要求。
findItem(intx,intn)方法用于檢測當前隨機數x是否已經存在,保證在一套組卷中沒有重復的題目,被createRdm()調用。
testD(int temp,int avg,int upLimited)方法用于檢測當前抽取的隨機數的重復次數是否超過均值avg,若超過均值,再次檢測是否超過均值上限up-Limited,若超過upLimited,表示此次抽取無效,隨機數temp將被拋棄,重新抽取,直到符合上述要求為止。被createRdm()調用。
get_Max_min(intm,intn)方法用于統計一次組卷采樣結果,采樣結果包括抽題重復次數最大值、最小值,重復次數最大值占樣本空間的比例,重復次數最小值占樣本空間的比例,重復次數最大值占抽題數量的比例,重復次數最小值占抽題數量的比例。統計結果將作為后續實驗分析的重要依據。被外部入口程序調用。
在上述建模設計中,有兩個重要的參數,一個是抽題重復數理論均值avg,另一個是均值理論上限值upLimited。
抽題重復數理論均值avg是根據樣本空間、抽題數量、考生數量三者結合而計算產生,計算方法是avg=K/(M/N),均值avg也表示K個考生試題中,至少有avg個重復的題目。
均值理論上限值upLimited,主要作用是把重復的題目數量控制在avg+upLimited的范圍內,這樣就能更加均勻的分布重復題目。
生成隨機數的基本方法是采樣Java類庫java.util.Random包里面的Random類完成,例如Random.nextInt(m),則產生一個在m以內的隨機數。具體隨機抽題采樣的算法如圖2。

圖2 隨機抽題采樣流程
隨機抽題采樣算法核心是設計了一個不斷探測的邏輯,直到找到可取的隨機數為止,評價一個可取的隨機數采樣findItem()方法和testD()兩個方法實現。findItem()方法的設計思想不再贅述,testD()方法的算法如圖3。

圖3 隨機數合法檢測流程圖
隨機數合法檢測算法中,upLimited上限值的估計很難確定,實驗中,可以把上限值設置為2,進行采樣分析,然后再調整上限值,比對實驗結果,找出一個最佳的值。
利用Java Application應用程序的特點,實例化一個具體的Rdm對象,設定考生數量,實現自動抽題組卷,觀察采樣和統計結果,對采樣結果對比分析。實現抽題組卷的入口程序算法如圖4。

圖4 抽題組卷入口程序
執行app程序,實現Rdm模型的邏輯設計,執行一次程序,就得到一次抽題結果。通過改變n、m、k,以及upLimited上限值等抽題的因素,多次執行程序,就能得到龐大的抽題組卷樣本。分析樣本的目的是分析數據統計比例,觀察統計圖像,來評價組卷的低重復率,以此反推出更為合理的n值、m值、k值和upLimited值。實驗中,本文多次采樣數據,認為有3組數據符合優化條件,具體如下。
第1組:m=100,k=50,upLimited=2,n值分別設定為20、40、60、80,通過比對,認為當n=60時,數據圖像基本趨于正態分布,比較合理,但是抽題重復次數的題量占樣本空間的比例過高。
第2組:n=60,k=50,upLimited=2,m值分別設定為90、200、300、400、500、1 000,通過比對,認為當m=1 000時,數據圖像接近正態分布,比較合理。
第3組:n=60,k=50,m=1 000,upLimited值分別設定為2、3、4、5、6,通過比對,認為當upLimited=3時,數據圖像比第2組實驗更加光滑,更加合理。分析結果如圖5。
圖5中第3組采樣統計可解讀為,題庫中共有1 000個題目,每套組卷題目數量為60,共有50個考卷,上限值為3。第一行數據中,抽題的題目重復次數為7次,在總題庫中類似這樣的題目共有31個,這31個題目占組卷題目量的52%,占總題庫數量的3%,重復的7個題目占每套組卷的14%。第3組實驗的數據圖像接近正態分布,且圖像相對光滑,是一個很優化的策略。
分析認為,第1組、第2組和第3組實驗結果,都基本接近正態分布,第3組實驗結果比其他兩組更優化,原因是第3組實驗的數據圖像相對光滑,抽題重復次數的題量占組卷題目數量的比例合理,即重復次數多的題量少,重復次數接近均值的題量多,重復次數少的題量少,兩頭少,中間多,基本接近正態分布,并且抽題重復次數的題量占樣本空間的比例不高,圖像曲線趨于直線,說明有重復題的題目數量分布均勻,覆蓋了大部分的題庫。
推導得出,當題庫數量為總抽題次數的1/3時,是比較合理的,即M/(N×K)=0.33時,且均值的上限偏移值upLimited設定為3或者4時,隨機抽題組卷的效果是更好的,考試試卷的題目雷同度是更低的,對考生來所,則體現了更好的公平性。
根據以上推導,本文枚舉了部分常見的抽組卷策略,如表1。

圖5 抽題組卷結果采樣分析

表1 常見的組卷策略情況
本文采用Java面向對象邏輯設計,通過大量的數據分析,推導出了隨機抽題的一種策略,在每次組卷考試中,有效地降低了組卷重復率,能夠有效區分考卷之間的重復題目。根據本策略,可以再拓展設計題目種類、難易度權值等因素,以此來設定題庫量的取值,為考試系統提供更優化的隨機抽題策略。
〔1〕司飆.MVC模式下的考試系統建模研究〔J〕.計算機科學,2013,40(6A):403-406.
〔2〕司飆.MVC模式下的校園網考試平臺設計〔D〕.昆明:昆明理工大學,2012.
〔3〕楊健,張曉玲,周少云.通用試題庫系統自動組卷算法研究〔J〕.大理學院學報,2007,6(10):77-79.
〔4〕李永飛,趙巧芳.網上考試系統中隨機抽題算法的實現〔J〕.華北科技學院學報,2009,6(3):88-90.
〔5〕陶喆,林財興,何緒蘭.基于ASP.NET2.0的網上考試系統隨機抽題功能的實現和改進〔J〕.現代機械,2010(5):55-58.
〔6〕王凡彬.利用可加性求一類獨立隨機變量和的分布〔J〕.大理學院學報,2014,13(12):1-2.
〔7〕王毅鵬,李榮芳.Java中不重復隨機數的生成與分析〔J〕.軟件開發與設計,2014(10):17.
〔8〕金百東.JAVA中一類隨機數生成方法設計思想〔J〕.信息技術,2012(3):181-183.
〔9〕黃英.試題庫系統中隨機抽題算法的設計與實現〔J〕.現代計算機,2010(3):198-200.
〔10〕陳煒.網上考試系統中隨機抽題算法研究〔J〕.現代商貿工業,2010(19):335-336.
〔11〕馬銳,熊梅.公共數學網絡考試系統分析與設計〔J〕.云南師范大學學報(自然科學版),2013,33(1):70-74.
〔12〕王雪燕.偽隨機數及其在JAVA程序中的應用分析〔J〕.硅谷,2012(19):156.