司 飆
(滇西科技師范學(xué)院信息科學(xué)與技術(shù)系,云南臨滄 677000)
網(wǎng)絡(luò)化考試作為一種高效、準(zhǔn)確、嚴(yán)肅的考試形式逐漸替代傳統(tǒng)筆試,被高校課改、培訓(xùn)機(jī)構(gòu)等廣泛應(yīng)用。在網(wǎng)絡(luò)化考試系統(tǒng)中能否實(shí)現(xiàn)滿足要求的隨機(jī)抽題組卷功能,實(shí)現(xiàn)一人一卷、重復(fù)率低是決定系統(tǒng)優(yōu)劣的一個(gè)關(guān)鍵因素〔1-5〕。
本文研究背景是基于Java Web技術(shù)的MVC模式下的校園網(wǎng)考試平臺(tái)設(shè)計(jì),在系統(tǒng)業(yè)務(wù)邏輯完備的基礎(chǔ)上研究隨機(jī)抽題的形態(tài)和產(chǎn)生過(guò)程,從而提高系統(tǒng)性能。通過(guò)本文的理論分析,也可以把此方法推廣到其他的考試系統(tǒng)中,跨越開(kāi)發(fā)語(yǔ)言的局限,為后續(xù)的研究提出思考。
為了更透徹地研究隨機(jī)抽題的重復(fù)率、平均分布等主要問(wèn)題,本研究簡(jiǎn)化了題目類(lèi)型、數(shù)據(jù)庫(kù)調(diào)用等業(yè)務(wù)邏輯部分,把數(shù)據(jù)庫(kù)題庫(kù)資源抽象為簡(jiǎn)單的數(shù)字序列,分析題庫(kù)序列抽取過(guò)程,并對(duì)抽取結(jié)果的重復(fù)率、序列分布情況等方面展開(kāi)研究,通過(guò)分析實(shí)驗(yàn)采樣結(jié)果,推導(dǎo)更加優(yōu)化的隨機(jī)抽題策略〔6-12〕。
2.1 問(wèn)題抽象 在給定樣本空間M內(nèi),隨機(jī)抽取N個(gè)數(shù)量,重復(fù)抽取K次,每次抽取中,N(i)不能重復(fù)。
2.2 問(wèn)題分析 當(dāng)M趨于無(wú)窮大時(shí),即M>=N×K,N(i)的重復(fù)率基本趨于平均分布,可達(dá)到每個(gè)K里面的N(i)都不重復(fù)的狀態(tài),但是當(dāng)M<N×K時(shí),N(i)的重復(fù)分布并不均勻。需要設(shè)計(jì)一種算法,能夠在有限個(gè)M中,抽取N個(gè)數(shù)時(shí),降低N(i)的重復(fù)次數(shù)?;蛘哒f(shuō),當(dāng)M、N、K3個(gè)量固定的前提下,能夠有效地降低N(i)的重復(fù)次數(shù)。
在實(shí)際的考試實(shí)施中,題庫(kù)數(shù)量總是有限的,并且建立題庫(kù)數(shù)量是一個(gè)漫長(zhǎng)的過(guò)程,所以降低N(i)的重復(fù)次數(shù)很有必要。
2.3 決定N(i)重復(fù)次數(shù)的因素 ①在每場(chǎng)考生數(shù)量K確定的情況下,樣本空間M的范圍,和抽取量N影響重復(fù)率,即M越大,N越小,重復(fù)率不高,反之則重復(fù)率增高;②在題庫(kù)數(shù)量M和抽題數(shù)N確定的情況下,考生數(shù)量K影響重復(fù)率,K值增加,則會(huì)導(dǎo)致N(i)的重復(fù)次數(shù)增加。
2.4 預(yù)期結(jié)果 通過(guò)實(shí)驗(yàn),應(yīng)該得到M、N、K三者的比例關(guān)系,即三者之間應(yīng)該達(dá)到怎樣的比例狀態(tài)時(shí),隨機(jī)數(shù)重復(fù)分布是最佳的。通俗的理解為設(shè)計(jì)出低重復(fù)率的考卷抽題策略。
實(shí)驗(yàn)采用Java面向?qū)ο蠹夹g(shù)建模,如圖1所示,Rdm類(lèi)是主要的隨機(jī)抽題類(lèi),app類(lèi)是用于實(shí)現(xiàn)Rdm類(lèi)的入口程序。
圖1 隨機(jī)抽題采樣模型
Rdm類(lèi)構(gòu)建了主要的隨機(jī)抽題邏輯,完成了探測(cè)隨機(jī)數(shù)、抽題、采樣、統(tǒng)計(jì)、顯示結(jié)果等功能。其中:
a[]數(shù)據(jù)用于記錄每套組卷抽題的序列N。
b[][2]數(shù)組用于記錄樣本空間M,第一維記錄題庫(kù)樣本序列,第二維用于記錄對(duì)應(yīng)序列的抽取次數(shù),即重復(fù)的次數(shù)。
1 mol酯可以水解成1 mol酸,由于總酸和總酯的質(zhì)量濃度是以乙酸和乙酸乙酯來(lái)計(jì)[8],乙酸乙酯與乙酸的相對(duì)分子質(zhì)量之比(88.12∶60.06)為1.467,即水解消耗的酯和水解生產(chǎn)的酸的質(zhì)量之比應(yīng)該是1.467。
Rdm(intm,intn)構(gòu)造方法用于調(diào)用初始化方法來(lái)設(shè)定數(shù)組a和數(shù)組b的規(guī)模。
createRdm(intn,intm)方法用于完成抽題采樣工作,不包括限定條件。
createRdmD(intn,intm,intk,int upLimited)方法是createRdm()方法的改進(jìn)策略,完成主要的抽題采樣工作,根據(jù)參數(shù)n的要求,在參數(shù)m的范圍內(nèi)生成隨機(jī)數(shù),采樣到數(shù)組a中,并滿足上限upLimited的要求。
findItem(intx,intn)方法用于檢測(cè)當(dāng)前隨機(jī)數(shù)x是否已經(jīng)存在,保證在一套組卷中沒(méi)有重復(fù)的題目,被createRdm()調(diào)用。
testD(int temp,int avg,int upLimited)方法用于檢測(cè)當(dāng)前抽取的隨機(jī)數(shù)的重復(fù)次數(shù)是否超過(guò)均值avg,若超過(guò)均值,再次檢測(cè)是否超過(guò)均值上限up-Limited,若超過(guò)upLimited,表示此次抽取無(wú)效,隨機(jī)數(shù)temp將被拋棄,重新抽取,直到符合上述要求為止。被createRdm()調(diào)用。
get_Max_min(intm,intn)方法用于統(tǒng)計(jì)一次組卷采樣結(jié)果,采樣結(jié)果包括抽題重復(fù)次數(shù)最大值、最小值,重復(fù)次數(shù)最大值占樣本空間的比例,重復(fù)次數(shù)最小值占樣本空間的比例,重復(fù)次數(shù)最大值占抽題數(shù)量的比例,重復(fù)次數(shù)最小值占抽題數(shù)量的比例。統(tǒng)計(jì)結(jié)果將作為后續(xù)實(shí)驗(yàn)分析的重要依據(jù)。被外部入口程序調(diào)用。
在上述建模設(shè)計(jì)中,有兩個(gè)重要的參數(shù),一個(gè)是抽題重復(fù)數(shù)理論均值avg,另一個(gè)是均值理論上限值upLimited。
抽題重復(fù)數(shù)理論均值avg是根據(jù)樣本空間、抽題數(shù)量、考生數(shù)量三者結(jié)合而計(jì)算產(chǎn)生,計(jì)算方法是avg=K/(M/N),均值avg也表示K個(gè)考生試題中,至少有avg個(gè)重復(fù)的題目。
均值理論上限值upLimited,主要作用是把重復(fù)的題目數(shù)量控制在avg+upLimited的范圍內(nèi),這樣就能更加均勻的分布重復(fù)題目。
生成隨機(jī)數(shù)的基本方法是采樣Java類(lèi)庫(kù)java.util.Random包里面的Random類(lèi)完成,例如Random.nextInt(m),則產(chǎn)生一個(gè)在m以內(nèi)的隨機(jī)數(shù)。具體隨機(jī)抽題采樣的算法如圖2。
圖2 隨機(jī)抽題采樣流程
隨機(jī)抽題采樣算法核心是設(shè)計(jì)了一個(gè)不斷探測(cè)的邏輯,直到找到可取的隨機(jī)數(shù)為止,評(píng)價(jià)一個(gè)可取的隨機(jī)數(shù)采樣findItem()方法和testD()兩個(gè)方法實(shí)現(xiàn)。findItem()方法的設(shè)計(jì)思想不再贅述,testD()方法的算法如圖3。
圖3 隨機(jī)數(shù)合法檢測(cè)流程圖
隨機(jī)數(shù)合法檢測(cè)算法中,upLimited上限值的估計(jì)很難確定,實(shí)驗(yàn)中,可以把上限值設(shè)置為2,進(jìn)行采樣分析,然后再調(diào)整上限值,比對(duì)實(shí)驗(yàn)結(jié)果,找出一個(gè)最佳的值。
利用Java Application應(yīng)用程序的特點(diǎn),實(shí)例化一個(gè)具體的Rdm對(duì)象,設(shè)定考生數(shù)量,實(shí)現(xiàn)自動(dòng)抽題組卷,觀察采樣和統(tǒng)計(jì)結(jié)果,對(duì)采樣結(jié)果對(duì)比分析。實(shí)現(xiàn)抽題組卷的入口程序算法如圖4。
圖4 抽題組卷入口程序
執(zhí)行app程序,實(shí)現(xiàn)Rdm模型的邏輯設(shè)計(jì),執(zhí)行一次程序,就得到一次抽題結(jié)果。通過(guò)改變n、m、k,以及upLimited上限值等抽題的因素,多次執(zhí)行程序,就能得到龐大的抽題組卷樣本。分析樣本的目的是分析數(shù)據(jù)統(tǒng)計(jì)比例,觀察統(tǒng)計(jì)圖像,來(lái)評(píng)價(jià)組卷的低重復(fù)率,以此反推出更為合理的n值、m值、k值和upLimited值。實(shí)驗(yàn)中,本文多次采樣數(shù)據(jù),認(rèn)為有3組數(shù)據(jù)符合優(yōu)化條件,具體如下。
第1組:m=100,k=50,upLimited=2,n值分別設(shè)定為20、40、60、80,通過(guò)比對(duì),認(rèn)為當(dāng)n=60時(shí),數(shù)據(jù)圖像基本趨于正態(tài)分布,比較合理,但是抽題重復(fù)次數(shù)的題量占樣本空間的比例過(guò)高。
第2組:n=60,k=50,upLimited=2,m值分別設(shè)定為90、200、300、400、500、1 000,通過(guò)比對(duì),認(rèn)為當(dāng)m=1 000時(shí),數(shù)據(jù)圖像接近正態(tài)分布,比較合理。
第3組:n=60,k=50,m=1 000,upLimited值分別設(shè)定為2、3、4、5、6,通過(guò)比對(duì),認(rèn)為當(dāng)upLimited=3時(shí),數(shù)據(jù)圖像比第2組實(shí)驗(yàn)更加光滑,更加合理。分析結(jié)果如圖5。
圖5中第3組采樣統(tǒng)計(jì)可解讀為,題庫(kù)中共有1 000個(gè)題目,每套組卷題目數(shù)量為60,共有50個(gè)考卷,上限值為3。第一行數(shù)據(jù)中,抽題的題目重復(fù)次數(shù)為7次,在總題庫(kù)中類(lèi)似這樣的題目共有31個(gè),這31個(gè)題目占組卷題目量的52%,占總題庫(kù)數(shù)量的3%,重復(fù)的7個(gè)題目占每套組卷的14%。第3組實(shí)驗(yàn)的數(shù)據(jù)圖像接近正態(tài)分布,且圖像相對(duì)光滑,是一個(gè)很優(yōu)化的策略。
分析認(rèn)為,第1組、第2組和第3組實(shí)驗(yàn)結(jié)果,都基本接近正態(tài)分布,第3組實(shí)驗(yàn)結(jié)果比其他兩組更優(yōu)化,原因是第3組實(shí)驗(yàn)的數(shù)據(jù)圖像相對(duì)光滑,抽題重復(fù)次數(shù)的題量占組卷題目數(shù)量的比例合理,即重復(fù)次數(shù)多的題量少,重復(fù)次數(shù)接近均值的題量多,重復(fù)次數(shù)少的題量少,兩頭少,中間多,基本接近正態(tài)分布,并且抽題重復(fù)次數(shù)的題量占樣本空間的比例不高,圖像曲線趨于直線,說(shuō)明有重復(fù)題的題目數(shù)量分布均勻,覆蓋了大部分的題庫(kù)。
推導(dǎo)得出,當(dāng)題庫(kù)數(shù)量為總抽題次數(shù)的1/3時(shí),是比較合理的,即M/(N×K)=0.33時(shí),且均值的上限偏移值upLimited設(shè)定為3或者4時(shí),隨機(jī)抽題組卷的效果是更好的,考試試卷的題目雷同度是更低的,對(duì)考生來(lái)所,則體現(xiàn)了更好的公平性。
根據(jù)以上推導(dǎo),本文枚舉了部分常見(jiàn)的抽組卷策略,如表1。
圖5 抽題組卷結(jié)果采樣分析
表1 常見(jiàn)的組卷策略情況
本文采用Java面向?qū)ο筮壿嬙O(shè)計(jì),通過(guò)大量的數(shù)據(jù)分析,推導(dǎo)出了隨機(jī)抽題的一種策略,在每次組卷考試中,有效地降低了組卷重復(fù)率,能夠有效區(qū)分考卷之間的重復(fù)題目。根據(jù)本策略,可以再拓展設(shè)計(jì)題目種類(lèi)、難易度權(quán)值等因素,以此來(lái)設(shè)定題庫(kù)量的取值,為考試系統(tǒng)提供更優(yōu)化的隨機(jī)抽題策略。
〔1〕司飆.MVC模式下的考試系統(tǒng)建模研究〔J〕.計(jì)算機(jī)科學(xué),2013,40(6A):403-406.
〔2〕司飆.MVC模式下的校園網(wǎng)考試平臺(tái)設(shè)計(jì)〔D〕.昆明:昆明理工大學(xué),2012.
〔3〕楊健,張曉玲,周少云.通用試題庫(kù)系統(tǒng)自動(dòng)組卷算法研究〔J〕.大理學(xué)院學(xué)報(bào),2007,6(10):77-79.
〔4〕李永飛,趙巧芳.網(wǎng)上考試系統(tǒng)中隨機(jī)抽題算法的實(shí)現(xiàn)〔J〕.華北科技學(xué)院學(xué)報(bào),2009,6(3):88-90.
〔5〕陶喆,林財(cái)興,何緒蘭.基于ASP.NET2.0的網(wǎng)上考試系統(tǒng)隨機(jī)抽題功能的實(shí)現(xiàn)和改進(jìn)〔J〕.現(xiàn)代機(jī)械,2010(5):55-58.
〔6〕王凡彬.利用可加性求一類(lèi)獨(dú)立隨機(jī)變量和的分布〔J〕.大理學(xué)院學(xué)報(bào),2014,13(12):1-2.
〔7〕王毅鵬,李榮芳.Java中不重復(fù)隨機(jī)數(shù)的生成與分析〔J〕.軟件開(kāi)發(fā)與設(shè)計(jì),2014(10):17.
〔8〕金百東.JAVA中一類(lèi)隨機(jī)數(shù)生成方法設(shè)計(jì)思想〔J〕.信息技術(shù),2012(3):181-183.
〔9〕黃英.試題庫(kù)系統(tǒng)中隨機(jī)抽題算法的設(shè)計(jì)與實(shí)現(xiàn)〔J〕.現(xiàn)代計(jì)算機(jī),2010(3):198-200.
〔10〕陳煒.網(wǎng)上考試系統(tǒng)中隨機(jī)抽題算法研究〔J〕.現(xiàn)代商貿(mào)工業(yè),2010(19):335-336.
〔11〕馬銳,熊梅.公共數(shù)學(xué)網(wǎng)絡(luò)考試系統(tǒng)分析與設(shè)計(jì)〔J〕.云南師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2013,33(1):70-74.
〔12〕王雪燕.偽隨機(jī)數(shù)及其在JAVA程序中的應(yīng)用分析〔J〕.硅谷,2012(19):156.