專利名稱::考場不重復(fù)交叉排座次方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及計(jì)算機(jī)信息處理
技術(shù)領(lǐng)域:
,具體涉及考號(hào)編排方法、考號(hào)座次分布規(guī)則和座次隨機(jī)構(gòu)造方法,通過PC機(jī)軟件設(shè)計(jì)編程,形成了計(jì)算機(jī)應(yīng)用系統(tǒng)——考場不重復(fù)交叉排座次系統(tǒng)。
背景技術(shù):
:考場座位編排的不公平問題一直困擾著各類考試設(shè)計(jì)部門,影響著對(duì)參考人員考核內(nèi)容真實(shí)性的考查。目前的考場座位編排多采用人工排座和計(jì)算機(jī)隨機(jī)排位兩種方式。人工排座位方式人為因素大,難以做到抵制人情公平排位,且工作量大,備選方案難以辦到。中考、高考中采用的計(jì)算機(jī)隨機(jī)排位方式又難以避免同一個(gè)班級(jí)(或同一個(gè)學(xué)校)的考生前、后、左、右排在一起的情況,這給某些考生互相抄襲提供了位置上的方便條件,也給監(jiān)考老師增加了難度,對(duì)正直的、遵紀(jì)守法的考生來說也是不公平的,對(duì)嚴(yán)肅考風(fēng)考紀(jì)也是不利的,同時(shí)還會(huì)誘發(fā)一些其它不良社會(huì)問題?,F(xiàn)時(shí)不論各級(jí)各類學(xué)校,還是全國的初中升高中考試,不論社會(huì)上的各種考試,還是全國的高中升大學(xué)考試,在給考生排座位這個(gè)問題上都沒有很好地解決上述談到的問題。
發(fā)明內(nèi)容本發(fā)明的目的,是針對(duì)上述問題,提供一種考場不重復(fù)交叉排座次方法,以克服考生重復(fù)座位和不重復(fù)座位的不公平,同一單位考生有相鄰和不相鄰的不公平及人為因素造成的不公平,構(gòu)成公平考場。為解決上述問題,本發(fā)明采用的技術(shù)方案是本發(fā)明提出了一種考號(hào)編排方法、考號(hào)座次分布規(guī)則和計(jì)算機(jī)自動(dòng)完成考號(hào)座次編排的“初表算法”、“隨機(jī)構(gòu)造篩選法”和“隨機(jī)構(gòu)造抽取法”。具體內(nèi)容詳細(xì)描述如下1、考號(hào)編排方法每個(gè)考場20~150名考生,其中一個(gè)學(xué)校(單位)的考生10~75名為單號(hào)(或雙號(hào)),另一個(gè)學(xué)校(單位或其它幾個(gè)學(xué)校之和)10~75名為雙號(hào)(或單號(hào)),然后,以自然數(shù)集合{1,2,...,20~150}中的一個(gè)元素這構(gòu)成考號(hào)末尾的2~3位。2、考號(hào)座次分布規(guī)則考生座位要求滿足(i)對(duì)每位考生來說,他/她的前后左右都不是其本校(本單位)的同學(xué);(ii)對(duì)每一個(gè)考生來說,他(她)在各門考試中,每一科的座位都發(fā)生了變化,且不重復(fù)。考號(hào)座位分布特性設(shè)計(jì)的數(shù)學(xué)描述把1,2,...20~150,這20~150個(gè)數(shù)字排列成表格,要求(i)橫向或縱向相鄰的兩個(gè)數(shù)字之和不能為偶數(shù);(ii)排列出的所有結(jié)果中,任何一個(gè)數(shù)字都不能出現(xiàn)在相同的位置。3、計(jì)算機(jī)算法為實(shí)現(xiàn)上述考號(hào)分布,本發(fā)明提出了兩種算法,這兩種算法都是利用“初表算法”生成第一張初始表,然后由初始表,或比對(duì)篩選,或加工構(gòu)造,得到所需數(shù)目的考號(hào)座位表。3.1“初表算法”初表是指由計(jì)算機(jī)自動(dòng)生成的滿足要求的第一張座位表,是產(chǎn)生出其它表的基礎(chǔ),也是本發(fā)明的關(guān)鍵。其算法步驟如下Step1定義含20~150個(gè)元素的一維數(shù)組,容納考號(hào){1,2,...,20~150};Step2定義5×4~15×10的二維數(shù)組,下標(biāo)表示座位,并以“0”初始化。內(nèi)容裝填將來產(chǎn)生的隨機(jī)考號(hào)序列;Step3定義5×4~15×10的二維數(shù)組,生成(考號(hào)序列→座次)對(duì)照表,對(duì)照表采用奇偶序列斜行隔行排列的方法。在標(biāo)準(zhǔn)化考場的情況下(1,3)(1,4)兩個(gè)位置的變?cè)3帧?”。參見圖2。Step4考號(hào)序列{1,2,...,20~150}隨機(jī)混洗,但要保證奇數(shù)的下標(biāo)仍為奇數(shù),偶數(shù)的下標(biāo)仍為偶數(shù);隨機(jī)混洗的方法是隨機(jī)產(chǎn)生1~20~150的正整數(shù)對(duì)(奇數(shù)序列產(chǎn)生奇數(shù)對(duì),偶數(shù)序列產(chǎn)生偶數(shù)對(duì)),交換兩個(gè)位置的內(nèi)容。重復(fù)足夠多的數(shù)量。Step5按照(考號(hào)序列→座次)對(duì)照表,把混洗后的序列添入第二步定義的數(shù)組。這樣就生成了第一張座位表,也就是初表。利用這張初表,可以采用一些方法加工,生成后續(xù)的表格,我們現(xiàn)采用兩種方法,實(shí)現(xiàn)了兩個(gè)版本的產(chǎn)品?,F(xiàn)把它們的分別敘述如下。3.2隨機(jī)構(gòu)造篩選法隨機(jī)構(gòu)造篩選法的基本思路是(參見圖3)Step1按照初表算法生成初表,存儲(chǔ)初表;Step2按照生成初表的方法生成新表,以考號(hào)座位分布特性設(shè)計(jì)的數(shù)學(xué)描述中的第二條為約束,檢驗(yàn)新表,滿足則該存儲(chǔ),計(jì)數(shù)器加一,再次生成新表;不滿足,重新生成新表,Step3重復(fù)Step2,直到計(jì)數(shù)器等于指定數(shù)量。3.3隨機(jī)構(gòu)造抽取法隨機(jī)構(gòu)造篩選法,雖然原理簡單,編程實(shí)現(xiàn)容易,結(jié)果混亂度高,但是重復(fù)工作量大,消耗機(jī)時(shí)長,對(duì)CPU要求較高。因此我們經(jīng)過更深入研究,開發(fā)了“隨機(jī)構(gòu)造抽取法”,大大提高了運(yùn)算速度。其原理及算法步驟敘述如下。按照鴿籠原理,一組滿足要求的座位表的數(shù)量最多是20~150個(gè)。這樣,我們只需按照某種規(guī)律構(gòu)造出這20~150個(gè)座位表,然后再從其中隨機(jī)抽取我們所需數(shù)目的表。這20~150張表格我們稱為一個(gè)“整體”,其中的每一張稱為一個(gè)“個(gè)體”。我們可以采用規(guī)律構(gòu)造“整體”,隨機(jī)抽取“個(gè)體”的方法把所需要的座位表產(chǎn)生出來?!罢w”的構(gòu)造方法是由于設(shè)計(jì)的考場中考號(hào)的奇偶序列的元素個(gè)數(shù)相等,都是10~75,奇偶序列分別向前向后循環(huán)移位,就可以生成10~75張不同的座位表,且滿足設(shè)計(jì)要求。然后對(duì)換奇偶兩序列,再次循環(huán)移位,可以構(gòu)造出另外的10~75張表格。把這20~150張表緩存?zhèn)溆?。如果我們?cè)谏尚蛄袝r(shí),事先隨機(jī)打亂數(shù)字的排列順序,這樣我們的構(gòu)造過程是有規(guī)律的,但加工的內(nèi)容是具有隨機(jī)性的。隨機(jī)抽取“個(gè)體”的思路是與“整體”中元素個(gè)數(shù)相等地產(chǎn)生一個(gè)指針point序列,該序列的元素集合為{1,2,3,...,20~150},隨機(jī)重排該序列以后,按照用戶指定的考試科目數(shù)no_subject取point中的前no_subject個(gè)指針,再依據(jù)這些point從緩存的表中抽取所需表格,就做到了隨機(jī)抽取。隨機(jī)構(gòu)造抽取法的詳細(xì)算法步驟(參見圖4)為Step1定義含20~150個(gè)元素的一維數(shù)組,容納考號(hào){1,2,...,20~150};定義5×4的二維數(shù)組,下標(biāo)表示座位,并以0初始化;Step2定義5×4~15×10的二維數(shù)組,生成(考號(hào)序列→座次)對(duì)照表;Step3考號(hào)序列{1,2,...,10~150}隨機(jī)混洗;Step4按照(考號(hào)序列→座次)對(duì)照表,把混洗后的序列添入第二步定義的數(shù)組;Step5奇偶序列分別向前向后循環(huán)移位,生成前10~75張不同的座位表;存儲(chǔ);Step6對(duì)換奇偶兩序列的位置,序列再次分別向前向后循環(huán)移位,生成后10~75張不同的座位表;存儲(chǔ);Step7定義指針序列{1,2,...,20~150}并隨機(jī)混洗;Step8按照用戶指定數(shù)目取相應(yīng)數(shù)目的指針,按照指針取對(duì)應(yīng)的座位表。本發(fā)明的有點(diǎn)和應(yīng)用范圍1、將使招生考試部門,學(xué)校的教務(wù)部門的工作效率大大提高,降低監(jiān)考老師的難度。2、使考生進(jìn)入考場后會(huì)心理平衡。3、會(huì)使監(jiān)考教師大大地降低監(jiān)考的難度,為國家選送合格人才把好質(zhì)量關(guān)。4、,將杜絕人們托人走后門,挖空心思安排有利座位的現(xiàn)象。5、會(huì)減輕各級(jí)領(lǐng)導(dǎo)的壓力,也是限制不正之風(fēng)的好措施,將使各級(jí)領(lǐng)導(dǎo)、考務(wù)人員遠(yuǎn)離被人找,搞不正之風(fēng)的被動(dòng)局面。6、為各種考試的考風(fēng)考紀(jì)的好轉(zhuǎn)提供了一項(xiàng)硬措施。7、會(huì)使學(xué)生家長更放心,感到更公平。8、會(huì)成為各級(jí)政府在考試這個(gè)問題上的一項(xiàng)有利措施。9、對(duì)每一個(gè)考生都是公平的,對(duì)社會(huì)是公平的。10、對(duì)國家是負(fù)責(zé)的,將給各級(jí)學(xué)校和社會(huì)的各種考試創(chuàng)設(shè)一個(gè)公平的環(huán)境,增加各學(xué)校的教務(wù)部門和招生考試單位的透明度。11、可降低監(jiān)考成本,可以在硬件條件相對(duì)薄弱的地區(qū)推廣。如在無條件使用手機(jī)屏蔽的地區(qū)廣泛使用,可減少警務(wù)監(jiān)考人員,大幅度降低各項(xiàng)成本。12、保密性、安全性強(qiáng),在標(biāo)準(zhǔn)化考試中,會(huì)在3.4×1025個(gè)方案中隨機(jī)抽取并生成延續(xù)方案。本發(fā)明可應(yīng)用于1、大、中、小學(xué),中等職業(yè)學(xué)校,電視大學(xué)等各種學(xué)校的期中、期末考試,質(zhì)量檢測,單科、多科的結(jié)業(yè)、畢業(yè)考試。2、初中升高中的選拔考試,高等學(xué)校的招生考試與各種會(huì)考考試。3、社會(huì)上的自學(xué)考試、職稱進(jìn)修考試、招聘人才考試、人事部門考試。4、各種學(xué)習(xí)質(zhì)量檢測考試。5、社會(huì)上、學(xué)校中需要公平競爭的考試。圖1標(biāo)準(zhǔn)化考場座位分布圖圖2標(biāo)準(zhǔn)化考場(考號(hào)序列→座次)對(duì)照表構(gòu)建示意圖圖3隨機(jī)構(gòu)造篩選法流程圖圖4隨機(jī)構(gòu)造抽取法流程圖圖5標(biāo)準(zhǔn)化考場座次表圖68行×8列考場座次表圖710行×8列考場座次表(五)具體實(shí)施例一第一步,建立系統(tǒng)開發(fā)的軟硬件平臺(tái)硬件奔騰500MHz以上CPU64MB以上內(nèi)存10GB以上硬盤空間軟件windows操作系統(tǒng)VB或VC或Delphi等編程環(huán)境第二步,用戶界面設(shè)計(jì)。該步驟可由軟件開發(fā)人員的愛好和編程能力自己確定;第三步,添加代碼。包裝、輸入輸出代碼不詳細(xì)介紹,重點(diǎn)介紹關(guān)鍵算法內(nèi)核部分。為嚴(yán)格描述核心內(nèi)容細(xì)節(jié),下面是用Delphi7.0語言寫成的,本發(fā)明的“隨機(jī)構(gòu)造抽取法”構(gòu)建標(biāo)準(zhǔn)化考場座次表時(shí)的核心代碼。程序流程參見圖4?!ぁぁ?/變量數(shù)據(jù)定義varno_student:array[1..30]ofInteger;numsubject:Integer;position,student:array[1..8,1..4]ofinteger;Lresult:array[1..8,1..4,1..30]ofinteger;position[1,1]:=4;position[1,2]:=1;position[1,3]:=0;position[1,4]:=0;position[2,1]:=7;position[2,2]:=6;position[2,3]:=3;position[2,4]:=2;position[3,1]:=12;position[3,2]:=9;position[3,3]:=8;position[3,4]:=5;position[4,1]:=15;position[4,2]:=14;position[4,3]:=11;position[4,4]:=10;position[5,1]:=20;position[5,2]:=17;position[5,3]:=16;position[5,4]:=13;position[6,1]:=23;position[6,2]:=22;position[6,3]:=19;position[6,4]:=18;position[7,1]:=28;position[7,2]:=25;position[7,3]:=24;position[7,4]:=21;position[8,1]:=29;position[8,2]:=30;position[8,3]:=27;position[8,4]:=26;···//產(chǎn)生初始表procedureTmainwindow.ini_position();vari,j,k,i1,i2:integer;x,xx:real;beginx:=random*100;//產(chǎn)生初始奇偶數(shù)隊(duì)列fori:=1to30do no_student[i]:=0;//序列隨機(jī)初值 if(round(x*10))mod2=1then begin fori:=0to14do begin no_student[2*i+1]:=2*i+1; end; fori:=1to15do begin no_student[2*i]:=2*i; end; end; if(round(x*10))mod2=0then begin fori:=1to15do<!--SIPO<DPn="7">--><dpn="d7"/> begin no_student[2*(i-1)+1]:=2*i; end; fori:=1to15do begin no_student[2*i]:=2*i-1; end; end;//隨機(jī)重排奇偶兩隊(duì)列fori:=1to30do//奇數(shù)隊(duì)列 begin x:=random(30); xx:=random(30); i1:=round(x); i2:=round(xx); if((i1mod2)=0)and(i1<>30)theni1:=i1+1; if((i1mod2)=0)and(i1=30)theni1:=i1-1; if((i2mod2)=0)and(i2<>30)theni2:=i2+1; if((i2mod2)=0)and(i2=30)theni2:=i2-1; j:=no_student[i1]; no_student[i1]:=no_student[i2]; no_student[i2]:=j; end:fori:=1to30do//偶數(shù)隊(duì)列 begin x:=random(30); xx:=random(30); i1:=round(x); i2:=round(xx); if((i1mod2)=1)theni1:=i1+1; if((i1mod2)=1)and(i1>30)theni1:=30; if(i1=0)theni1:=2;<!--SIPO<DPn="8">--><dpn="d8"/> if((i2mod2)=1)theni2:=i2+1; if((i1mod2)=1)and(i2>30)theni2:=30; if(i2=0)theni2:=2; j:=no_student[i1]; no_student[i1]:=no_student[i2]; no_student[i2]:=j; end;//排出初始座位表fori:=1to30do begin forj:=1to8do//行 begin fork:=1to4do//列 if(position[j][k]=i)thenstudent[j][k]:=no_student[i]; end; end;end;//隨機(jī)構(gòu)造抽取法procedureTmainwindow.startClick(Sender:TObject); var · · · point:array[1..30]ofinteger;//定義隨機(jī)抽取指針begin · · · fori:=1to30dopoint[i]:=i;//隨機(jī)抽取指針賦初值 fori:=1to60do//隨機(jī)抽取指針混洗 begin x:=random(30);<!--SIPO<DPn="9">--><dpn="d9"/> xx:=random(30); i1:=round(x); i2:=round(xx); ifi1<=0theni1:=1; ifi2<=0theni2:=1; ifi1>30theni1:=30; ifi2>30theni2:=30; j:=point[i1]; point[i1]:=point[i2]; point[i2]:=j; end;···//產(chǎn)生30種基本座位表fortable:=1to15do//前15個(gè) begin tem:=no_student[1]; fori:=0to13do begin no_student[2*i+1]:=no_student[2*i+3]; end; no_student[29]:=tem; tem:=no_student[30]; fori:=0to13do begin no_student[30-2*i]:=no_student[30-2*i-2]; end; no_student[2]:=tem; fori:=1to30do begin forj:=1to8do//行<!--SIPO<DPn="10">--><dpn="d10"/> begin fork:=1to4do//列 if(position[j][k]=i)thenstudent[j][k]:=no_student[i]; end; end; fori:=1to8do forj:=1to4do Lresult[i,j,table]:=student[i,j]; end;//奇偶對(duì)換fori:=0to14do begin tem:=no_student[2*i+1]; no_student[2*i+1]:=no_student[2*i+2]; no_student[2*i+2]:=tem; end; fortable:=16to30do//后15個(gè) begin tem:=no_student[1]; fori:=0to13do begin no_student[2*i+1]:=no_student[2*i+3]; end; no_student[29]:=tem; tem:=no_student[30]; fori:=0to13do begin no_student[30-2*i]:=no_student[30-2*i-2]; end; no_student[2]:=tem; fori:=1to30do begin<!--SIPO<DPn="11">--><dpn="d11"/> forj:=1to8do//行 begin fork:=1to4do//列 if(position[j][k]=i)thenstudent[j][k]:=no_student[i]; end; end; fori:=1to8do forj:=1to4do Lresult[i,j,table]:=student[i,j]; end;end;//根據(jù)指定數(shù)量,利用point(i)抽取表格并打印輸出結(jié)果(略)第四步,編譯鏈接,生成可執(zhí)行文件,運(yùn)行該可執(zhí)行文件,即可產(chǎn)生出與附件中樣品具有相同特性的座位表。(六)具體實(shí)施例二其它步驟與具體實(shí)施例一相同。用Delphi7.0語言寫成的,本發(fā)明采用“隨機(jī)構(gòu)造篩選法”構(gòu)建10×10考場座次表的核心代碼部分如下···//變量數(shù)據(jù)定義varno_student:array[1..100]ofInteger;numsubject:Integer;position,student:array[1..10,1..10]ofinteger;Lresult:array[1..10,1..10,1..100]ofinteger;//生成(考號(hào)序列→座次)對(duì)照表,參見圖2···position[1,1]:=1;position[1,2]:=2;position[1,3]:=5;position[1,4]:=12;position[1,5]:=9;position[1,6]:=24;position[1,7]:=19;position[1,8]:=36;position[1,9]:=31;position[1,10]:=48;position[2,1]:=4;position[2,2]:=3;position[2,3]:=10;position[2,4]:=11;position[2,5]:=22;position[2,6]:=21;position[2,7]:=34;position[2,8]:=33;position[2,9]:=46;position[2,10]:=43;position[3,1]:=7;position[3,2]:=8;position[3,3]:=13;position[3,4]:=20;position[3,5]:=23;position[3,6]:=32;position[3,7]:=35;position[3,8]:=44;position[3,9]:=45;position[3,10]:=56;position[4,1]:=6;position[4,2]:=15;position[4,3]:=18;position[4,4]:=25;position[4,5]:=30;position[4,6]:=37;position[4,7]:=42;position[4,8]:=47;position[4,9]:=54;position[4,10]:=53;position[5,1]:=17;position[5,2]:=16;position[5,3]:=27;position[5,4]:=28;position[5,5]:=39;position[5,6]:=40;position[5,7]:=49;position[5,8]:=52;position[5,9]:=55;position[5,10]:=60;position[6,1]:=14;position[6,2]:=29;position[6,3]:=26;position[6,4]:=41;position[6,5]:=38;position[6,6]:=51;position[6,7]:=50;position[6,8]:=57;position[6,9]:=58;position[6,10]:=59;position[7,1]:=61;position[7,2]:=62;position[7,3]:=63;position[7,4]:=64;position[7,5]:=65;position[7,6]:=66;position[7,7]:=67;position[7,8]:=68;position[7,9]:=69;position[7,10]:=70;position[8,1]:=80;position[8,2]:=79;position[8,3]:=78;position[8,4]:=77;position[8,5]:=76;position[8,6]:=75;position[8,7]:=74;position[8,8]:=73;position[8,9]:=72;position[8,10]:=71;position[9,1]:=81;position[9,2]:=82;position[9,3]:=83;position[9,4]:=84;position[9,5]:=85;position[9,6]:=86;position[9,7]:=87;position[9,8]:=88;position[9,9]:=89;position[9,10]:=90;position[10,1]:=100;position[10,2]:=99;position[10,3]:=98;position[10,4]:=97;position[10,5]:=94;position[10,6]:=95;position[10,7]:=96;position[10,8]:=93;position[10,9]:=92;position[10,10]:=91;//產(chǎn)生初試座位表procedureTmainwindow.ini_position();varI,j,k,i1,i2:integer;x,xx:real;beginx:=random*100;//產(chǎn)生初始奇偶數(shù)隊(duì)列fori:=1to100do no_student[i]:=0; if(round(x*10))mod2=1then begin fori:=0to49do begin no_student[2*i+1]:=2*i+1; end; fori:=1to50do begin no_student[2*i]:=2*I; end;<!--SIPO<DPn="16">--><dpn="d16"/> end; if(round(x*10))mod2=0then begin fori:=1to50do begin no_student[2*(i-1)+1]:=2*i; end; fori:=1to50do begin no_student[2*i]:=2*i-1; end; end;//隨機(jī)重排兩隊(duì)列fori:=1to100do//奇數(shù)隊(duì)列 begin x:=random(100); xx:=random(100); i1:=round(x); i2:=round(xx); if((i1mod2)=0)and(i1<>100)theni1:=i1+1; if((i1mod2)=0)and(i1=100)theni1:=i1-1; if((i2mod2)=0)and(i2<>100)theni2:=i2+1; if((i2mod2)=0)and(i2=100)theni2:=i2-1; j:=no_student[i1]; no_student[i1]:=no_student[i2]; no_student[i2]:=j; end; fori:=1to100do//偶數(shù)隊(duì)列 begin x:=random(100);<!--SIPO<DPn="17">--><dpn="d17"/> xx:=random(100); i1:=round(x); i2:=round(xx); if((i1mod2)=1)theni1:=i1+1; if((i1mod2)=1)and(i1>100)theni1:=100; if(i1=0)theni1:=2; if((i2mod2)=1)theni2:=i2+1; if((i1mod2)=1)and(i2>100)theni2:=100; if(i2=0)theni2:=2; j:=no_student[i1]; no_student[i1]:=no_student[i2]; no_student[i2]:=j; end;//排出初始座位表fori:=1to100do begin forj:=1to10do//行 begin fork:=1to10do//列 if(position[j][k]=i)thenstudent[j][k]:=no_student[i]; end; end;end;···//隨機(jī)構(gòu)造篩選法fori:=1to10do forj:=1to10do Lresult[i,j,no_result]:=student[i,j];<!--SIPO<DPn="18">--><dpn="d18"/> whileno_result<numsubjectdo begin fork:=1tono_resultdo begin forL:=1to10do begin form:=1to10do ifLresult[L,m,k]=student[L,m]then gotomakeagain; end; end; no_result:=no_result+1; fori:=1to10do forj:=1to10do Lresult[i,j,no_result]:=student[i,j];//存儲(chǔ) makeagain: ini_position(); end;···系統(tǒng)執(zhí)行結(jié)果的使用方法主考部門首先根據(jù)考號(hào)編排方法對(duì)考生統(tǒng)一編制考號(hào),滿足本發(fā)明要求后,運(yùn)行本系統(tǒng),運(yùn)行時(shí)根據(jù)考試科目的名稱、數(shù)量分別打印座位表,與試卷一起封裝,屆時(shí)張貼于考場內(nèi)醒目位置,考生按號(hào)入座。權(quán)利要求1、考場不重復(fù)交叉排座次系統(tǒng)所包含的方法、規(guī)則及其算法詳細(xì)內(nèi)容,其特征在于包括1)考號(hào)編排方法每個(gè)考場20~150名考生,其中一個(gè)學(xué)校(單位)的考生10~75名為單號(hào)(或雙號(hào)),另一個(gè)學(xué)校(單位或其它幾個(gè)學(xué)校之和)10~75名為雙號(hào)(或單號(hào)),然后,以自然數(shù)集合{1,2,...,20~150}中的一個(gè)元素構(gòu)成考號(hào)的末兩位。2)考號(hào)座次分布規(guī)則考生座次要求滿足(i)對(duì)每位考生來說,他/她的前后左右都不是其本校(本單位)的同學(xué);(ii)對(duì)每一個(gè)考生來說,他(她)在各門考試中,每一科的座次都發(fā)生了變化,且不重復(fù)??继?hào)座次分布特性設(shè)計(jì)的數(shù)學(xué)描述把1,2,...20~150,這20~150個(gè)數(shù)字排列成表格,要求(i)橫向或縱向相鄰的兩個(gè)數(shù)字之和不能為偶數(shù);(ii)排列出的所有結(jié)果中,任何一個(gè)數(shù)字都不能出現(xiàn)在相同的位置。3)計(jì)算機(jī)算法為實(shí)現(xiàn)上述考號(hào)分布,本發(fā)明提出了兩種算法,這兩種算法都是利用“初表算法”生成第一張初始表,然后由初始表,或比對(duì)篩選,或加工構(gòu)造,得到所需數(shù)目的考號(hào)座次表。3.1)“初表算法”初表是指由計(jì)算機(jī)自動(dòng)生成的滿足要求的第一張座次表,是產(chǎn)生出其它表的基礎(chǔ),也是本發(fā)明的關(guān)鍵。其算法步驟如下Step1定義含20~150個(gè)元素的一維數(shù)組,容納考號(hào)序列{1,2,...,20~150};Step2定義5×4~15×10的二維數(shù)組,下標(biāo)表示座次,并以“0”初始化。內(nèi)容裝填將來產(chǎn)生的隨機(jī)考號(hào)序列;Step3定義5×4~15×10的二維數(shù)組,生成(考號(hào)序列→座次)對(duì)照表,對(duì)照表采用奇偶序列斜行隔行排列的方法,且(1,3)(1,4)兩個(gè)位置的變?cè)3帧?”。Step4考號(hào)序列{1,2,...,20~150}隨機(jī)混洗,但要保證奇數(shù)的下標(biāo)仍為奇數(shù),偶數(shù)的下標(biāo)仍為偶數(shù);隨機(jī)混洗的方法是隨機(jī)產(chǎn)生1~20~150的正整數(shù)對(duì)(奇數(shù)序列產(chǎn)生奇數(shù)對(duì),偶數(shù)序列產(chǎn)生偶數(shù)對(duì)),交換兩個(gè)位置的內(nèi)容。重復(fù)足夠多的數(shù)量。Step5按照(考號(hào)序列→座次)對(duì)照表,把混洗后的序列添入第二步定義的數(shù)組。這樣就生成了第一張座次表,也就是初表。利用這張初表,可以采用一些方法加工,生成后續(xù)的表格,我們現(xiàn)采用兩種方法,實(shí)現(xiàn)了兩個(gè)版本的產(chǎn)品?,F(xiàn)把它們的分別敘述如下。3.2)隨機(jī)構(gòu)造篩選法隨機(jī)構(gòu)造篩選法的基本思路是Step1按照初表算法生成初表,存儲(chǔ)初表;Step2按照生成初表的方法生成新表,以考號(hào)座次分布特性設(shè)計(jì)的數(shù)學(xué)描述中的第二條為約束,檢驗(yàn)新表,滿足則該存儲(chǔ),計(jì)數(shù)器加一,再次生成新表;不滿足,重新生成新表,Step3重復(fù)Step2,直到計(jì)數(shù)器等于指定數(shù)量。3.3)隨機(jī)構(gòu)造抽取法隨機(jī)構(gòu)造篩選法,雖然原理簡單,編程實(shí)現(xiàn)容易,結(jié)果混亂度高,但是重復(fù)工作量大,消耗機(jī)時(shí)長,對(duì)CPU要求較高。因此我們經(jīng)過更深入研究,開發(fā)了“隨機(jī)構(gòu)造抽取法”,大大提高了運(yùn)算速度。其原理及算法步驟敘述如下。按照鴿籠原理,一組滿足要求的座次表的數(shù)量最多是20~150個(gè)。這樣,我們只需按照某種規(guī)律構(gòu)造出這20~150個(gè)座次表,然后再從其中隨機(jī)抽取我們所需數(shù)目的表。這20~150張表格我們稱為一個(gè)“整體”,其中的每一張稱為一個(gè)“個(gè)體”。我們可以采用規(guī)律構(gòu)造“整體”,隨機(jī)抽取“個(gè)體”的方法把所需要的座次表產(chǎn)生出來?!罢w”的構(gòu)造方法是由于設(shè)計(jì)的考場中考號(hào)的奇偶序列的元素個(gè)數(shù)相等,都是15,奇偶序列分別向前向后循環(huán)移位,就可以生成15張不同的座次表,且滿足設(shè)計(jì)要求。然后對(duì)換奇偶兩序列,再次循環(huán)移位,可以構(gòu)造出另外的15張表格。把這20~150張表緩存?zhèn)溆?。如果我們?cè)谏尚蛄袝r(shí),事先隨機(jī)打亂數(shù)字的排列順序,這樣我們的構(gòu)造過程是有規(guī)律的,但加工的內(nèi)容是具有隨機(jī)性的。隨機(jī)抽取“個(gè)體”的思路是與“整體”中元素個(gè)數(shù)相等地產(chǎn)生一個(gè)指針point序列,該序列的元素集合為{1,2,3,...,20~150},隨機(jī)重排該序列以后,按照用戶指定的考試科目數(shù)no_subject取point中的前no_subject個(gè)指針,再依據(jù)這些point從緩存的表中抽取所需表格,就做到了隨機(jī)抽取。隨機(jī)構(gòu)造抽取法的詳細(xì)算法步驟為Step1定義含20~150個(gè)元素的一維數(shù)組,容納考號(hào){1,2,...,20~150};定義5×4~15×10的二維數(shù)組,下標(biāo)表示座次,并以0初始化;Step2定義5×4~15×10的二維數(shù)組,生成(考號(hào)序列→座次)對(duì)照表;Step3考號(hào)序列{1,2,...,20~150}隨機(jī)混洗;Step4按照(考號(hào)序列→座次)對(duì)照表,把混洗后的序列添入第二步定義的數(shù)組;Step5奇偶序列分別向前向后循環(huán)移位,生成前15張不同的座次表;存儲(chǔ);Step6對(duì)換奇偶兩序列的位置,序列再次分別向前向后循環(huán)移位,生成后15張不同的座次表;存儲(chǔ);Step7定義指針序列{1,2,...,20~150}并隨機(jī)混洗;Step8按照用戶指定數(shù)目取相應(yīng)數(shù)目的指針,按照指針取對(duì)應(yīng)的座次表。2、根據(jù)權(quán)利要求1所述的考場不重復(fù)交叉排座次方法,其特征在于考號(hào)的最末2~3位為考場內(nèi)部考生序列號(hào)。在標(biāo)準(zhǔn)考場情況下為自然數(shù)集合{1,2,…,20~150}中的元素,且單雙號(hào)不為來自同一單位的人員。3、根據(jù)權(quán)利要求1所述的考場不重復(fù)交叉排座次方法,其特征在于(i)橫向或縱向相鄰的兩個(gè)數(shù)字之和不能為偶數(shù);(ii)排列出的所有結(jié)果中,任何一個(gè)數(shù)字都不能出現(xiàn)在相同的位置。4、根據(jù)權(quán)利要求1所述的考場不重復(fù)交叉排座次方法,其特征在于Step1定義20~150個(gè)元素的一維數(shù)組,容納考號(hào)序列{1,2,...,20~150};Step2定義5×4~15×10的二維數(shù)組,下標(biāo)表示座次,并以“0”初始化。內(nèi)容裝填將來產(chǎn)生的隨機(jī)考號(hào)序列;Step3定義5×4~15×10的二維數(shù)組,生成(考號(hào)序列→座次)對(duì)照表,對(duì)照表采用奇偶序列斜行隔行排列的方法,且(1,3)(1,4)兩個(gè)位置的變?cè)3帧?”。Step4考號(hào)序列{1,2,...,20~150}隨機(jī)混洗,但要保證奇數(shù)的下標(biāo)仍為奇數(shù),偶數(shù)的下標(biāo)仍為偶數(shù);隨機(jī)混洗的方法是隨機(jī)產(chǎn)生1~20~150的正整數(shù)對(duì)(奇數(shù)序列產(chǎn)生奇數(shù)對(duì),偶數(shù)序列產(chǎn)生偶數(shù)對(duì)),交換兩個(gè)位置的內(nèi)容。重復(fù)足夠多的數(shù)量。Step5按照(考號(hào)序列→座次)對(duì)照表,把混洗后的序列添入第二步定義的數(shù)組。5、根據(jù)權(quán)利要求1所述的考場不重復(fù)交叉排座次方法,其特征在于初表生成步驟(3)中考號(hào)序列→座次對(duì)照表的生成是采用了奇偶序列斜行隔行排列的方法,保證了算法由一維考號(hào)序列到二維座次表的轉(zhuǎn)換,保證了算法結(jié)果滿足座次分布規(guī)則(i)的要求。6、根據(jù)權(quán)利要求1所述的考場不重復(fù)交叉排座次方法,其特征在于初表生成步驟(4)中隨機(jī)混洗的方法是隨機(jī)產(chǎn)生1~20~150的正整數(shù)對(duì),奇數(shù)序列產(chǎn)生奇數(shù)對(duì),偶數(shù)序列產(chǎn)生偶數(shù)對(duì),利用數(shù)對(duì)交換兩個(gè)位置的內(nèi)容,重復(fù)足夠多的數(shù)量。7、根據(jù)權(quán)利要求1所述的考場不重復(fù)交叉排座次方法,其特征在于隨機(jī)構(gòu)造篩選法中,重復(fù)利用“初表算法”,不斷生成新表,以考號(hào)座次分布特性設(shè)計(jì)的數(shù)學(xué)描述中的第二條為約束比對(duì)新舊表,得到滿足條件的座次表,直至所需數(shù)目。8、根據(jù)權(quán)利要求1所述的考場不重復(fù)交叉排座次方法,其特征在于,隨機(jī)構(gòu)造抽取法包括Step1定義含20~150個(gè)元素的一維數(shù)組,容納考號(hào){1,2,...,20~150};定義5×4~15×10的二維數(shù)組,下標(biāo)表示座次,并以0初始化;Step2定義5×4~15×10的二維數(shù)組,生成(考號(hào)序列→座次)對(duì)照表;Step3考號(hào)序列{1,2,...,20~150}隨機(jī)混洗;Step4按照(考號(hào)序列→座次)對(duì)照表,把混洗后的序列添入第二步定義的數(shù)組;Step5奇偶序列分別向前向后循環(huán)移位,生成前10~75張不同的座次表;存儲(chǔ);Step6對(duì)換奇偶兩序列的位置,序列再次分別向前向后循環(huán)移位,生成后10~75張不同的座次表,存儲(chǔ);Step7定義指針序列{1,2,...,20~150}并隨機(jī)混洗;Step8按照用戶指定數(shù)目取相應(yīng)數(shù)目的指針,按照指針取對(duì)應(yīng)的座次表。9、根據(jù)權(quán)利要求1所述的考場不重復(fù)交叉排座次方法,其特征在于隨機(jī)構(gòu)造抽取法第(3)步驟中,隨機(jī)混洗的方法是隨機(jī)產(chǎn)生1~20~150的正整數(shù)對(duì),奇數(shù)序列產(chǎn)生奇數(shù)對(duì),偶數(shù)序列產(chǎn)生偶數(shù)對(duì),交換兩個(gè)位置的內(nèi)容。重復(fù)足夠多的數(shù)量。保證了算法結(jié)果的隨機(jī)性。10、根據(jù)權(quán)利要求1所述的考場不重復(fù)交叉排座次方法,其特征在于,隨機(jī)構(gòu)造抽取法(5)、(6)步驟中,奇偶序列分別向前向后循環(huán)移位,每移動(dòng)一次,即對(duì)應(yīng)一張座次表。保證了算法結(jié)果的數(shù)目和不重復(fù)性。11、根據(jù)權(quán)利要求1所述的考場不重復(fù)交叉排座次方法,其特征在于,隨機(jī)構(gòu)造抽取法(7)、(8)步驟中,定義并隨機(jī)構(gòu)造了指針序列,并利用該隨機(jī)序列由“整體”抽取“個(gè)體”,實(shí)現(xiàn)了軟件結(jié)果的隨機(jī)不重復(fù)特性。全文摘要考場不重復(fù)交叉排座次方法,是涉及計(jì)算機(jī)信息處理
技術(shù)領(lǐng)域:
。它包括考號(hào)編排方法、考號(hào)座次分布規(guī)則和計(jì)算機(jī)自動(dòng)完成考號(hào)座次編排的“初表算法”、“隨機(jī)構(gòu)造篩選法”和“隨機(jī)構(gòu)造抽取法”。本發(fā)明可應(yīng)用于1.大、中、小學(xué),中等職業(yè)學(xué)校,電視大學(xué)等各種學(xué)校的期中、期末考試,質(zhì)量檢測,單科、多科的結(jié)業(yè)、畢業(yè)考試。2.初中升高中的選拔考試,高等學(xué)校的招生考試與各種會(huì)考考試。3.社會(huì)上的自學(xué)考試、職稱進(jìn)修考試、招聘人才考試、人事部門考試。4.各種學(xué)習(xí)質(zhì)量檢測考試。5.社會(huì)上、學(xué)校中需要公平競爭的考試。文檔編號(hào)G06F19/00GK1896986SQ20061004636公開日2007年1月17日申請(qǐng)日期2006年4月24日優(yōu)先權(quán)日2006年4月24日發(fā)明者李成仁,李庚,張建民申請(qǐng)人:李成仁