偽均勻隨機(jī)數(shù)的計(jì)算機(jī)檢驗(yàn)_第1頁
偽均勻隨機(jī)數(shù)的計(jì)算機(jī)檢驗(yàn)_第2頁
偽均勻隨機(jī)數(shù)的計(jì)算機(jī)檢驗(yàn)_第3頁
偽均勻隨機(jī)數(shù)的計(jì)算機(jī)檢驗(yàn)_第4頁
偽均勻隨機(jī)數(shù)的計(jì)算機(jī)檢驗(yàn)_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 偽均勻隨機(jī)數(shù)的計(jì)算機(jī)檢驗(yàn)摘要現(xiàn)代社會(huì)中,計(jì)算機(jī)能力的提高使得隨機(jī)數(shù)發(fā)生器在眾多領(lǐng)域中有了較為廣泛的應(yīng)用,如蒙特卡羅方法,統(tǒng)計(jì)抽樣技術(shù)和密碼學(xué)等。同時(shí)關(guān)于隨機(jī)數(shù)發(fā)生器也產(chǎn)生了很多的理論和方法,本文將簡單介紹一些常見的偽均勻隨機(jī)數(shù)發(fā)生器:線性同余發(fā)生器(LCG方法)和反饋位移寄存器法(FSR方法)。然后對(duì)偽均勻隨機(jī)數(shù)序列進(jìn)行統(tǒng)計(jì)檢驗(yàn)。主要檢驗(yàn)方法有參數(shù)檢驗(yàn)(包括均值、方差或各階距)、均勻性檢驗(yàn)(包括卡方、柯氏和序列檢驗(yàn))、獨(dú)立性檢驗(yàn)(包括相關(guān)系數(shù)、列聯(lián)表和游程檢驗(yàn))。最后,本文將利用Matlab生成一列隨機(jī)數(shù),并運(yùn)用SPSS統(tǒng)計(jì)軟件對(duì)此列隨機(jī)數(shù)的統(tǒng)計(jì)特性擇其適合的方法進(jìn)行檢驗(yàn)。關(guān)鍵詞:偽隨機(jī)數(shù);

2、隨機(jī)數(shù)發(fā)生器;統(tǒng)計(jì)檢驗(yàn);SPSS統(tǒng)計(jì)分析AbstractIn modern society, the improvement of computer capabilities make random number generator widely used in many areas, such as the Monte Carlo method, statistical sampling techniques and cryptography. At the same time there are a lot of theories and methods on the random num

3、ber generator, I will introduce some of the common random number generators briefly in this article: linear congruential generator (LCG method) and feedback shift register method (FSR method) . Then I will do statistical tests with the sequence of random numbers . Main methods are: parameter test (i

4、nvolving the mean, variance, or the order from) ,the test of homogeneity (involving Chi-square, Coriolis and sequence test), test for independence (involving the correlation coefficient, contingency table and the runs test. Finally ,this paper will use the Matlab generate a sequence of random number

5、s, use SPSS and select the appropriate test methods to test statistical properties of the sequence of random numbers.Key words: random number, random number generator, statistical test,SPSS statistical analysis目錄 TOC o 1-3 h z u HYPERLINK l _Toc263191866 摘要 PAGEREF _Toc263191866 h I HYPERLINK l _Toc

6、263191867 Abstract PAGEREF _Toc263191867 h II HYPERLINK l _Toc263191868 一、引言1 HYPERLINK l _Toc263191869 1基本概念和定理 PAGEREF _Toc263191869 h 1 HYPERLINK l _Toc263191870 2 偽隨機(jī)數(shù) PAGEREF _Toc263191870 h 2 HYPERLINK l _Toc263191871 二、產(chǎn)生隨機(jī)數(shù)的一般方法3 HYPERLINK l _Toc263191872 2.1 取中法3 HYPERLINK l _Toc263191873 2

7、.1.1 平方取中法3 HYPERLINK l _Toc263191874 2.1.2乘積取中法 PAGEREF _Toc263191874 h 3 HYPERLINK l _Toc263191875 2.2 同余發(fā)生器 PAGEREF _Toc263191875 h 3 HYPERLINK l _Toc263191876 2.2.1混合同余法4 HYPERLINK l _Toc263191877 2.2.2乘同余法 PAGEREF _Toc263191877 h 4 HYPERLINK l _Toc263191878 2.2.3加同余法 PAGEREF _Toc263191878 h 4 H

8、YPERLINK l _Toc263191879 2.3反饋位移寄存器法 PAGEREF _Toc263191879 h 4 HYPERLINK l _Toc263191880 三、偽均勻隨機(jī)數(shù)的統(tǒng)計(jì)檢驗(yàn)6 HYPERLINK l _Toc263191881 3.1 檢驗(yàn)步驟6 HYPERLINK l _Toc263191882 3.2 檢驗(yàn)統(tǒng)計(jì)量6 HYPERLINK l _Toc263191883 3.3 統(tǒng)計(jì)檢驗(yàn)方法7 HYPERLINK l _Toc263191884 3.3.1參數(shù)檢驗(yàn)7 HYPERLINK l _Toc263191885 3.3.2均勻性檢驗(yàn)8 HYPERLINK

9、l _Toc263191886 3.3.3獨(dú)立性檢驗(yàn)10 HYPERLINK l _Toc263191887 3.3.4其他經(jīng)驗(yàn)檢驗(yàn)12 HYPERLINK l _Toc263191888 四、實(shí)例分析13 HYPERLINK l _Toc263191889 4.1 數(shù)據(jù)產(chǎn)生及錄入13 HYPERLINK l _Toc263191890 4.2 參數(shù)檢驗(yàn)-單樣本t檢驗(yàn)13 HYPERLINK l _Toc263191891 4.3均勻性檢驗(yàn)-卡方檢驗(yàn)14 HYPERLINK l _Toc263191892 4.4獨(dú)立性檢驗(yàn)16 HYPERLINK l _Toc263191893 4.5本章小結(jié)

10、18 HYPERLINK l _Toc263191888 五、結(jié)論19 HYPERLINK l _Toc263191894 參考文獻(xiàn)20 HYPERLINK l _Toc263191895 附錄21一、引言在科學(xué)研究和工程設(shè)計(jì)中廣泛應(yīng)用到計(jì)算機(jī)模擬方法,從而常常需要產(chǎn)生大量的具有特定統(tǒng)計(jì)性質(zhì)的隨機(jī)數(shù)。這種隨機(jī)數(shù)通常是由計(jì)算機(jī)以某種數(shù)學(xué)方法產(chǎn)生,他們實(shí)質(zhì)上是完全確定的,但可以滿足一定的統(tǒng)計(jì)特征,故也稱為偽隨機(jī)數(shù)。而如何產(chǎn)生達(dá)到統(tǒng)計(jì)要求的隨機(jī)數(shù),則有不同的方法:硬件方法和軟件方法。硬件方法可以在計(jì)算機(jī)上附上一個(gè)硬件設(shè)備或者采用移位寄存器來產(chǎn)生偽隨機(jī)數(shù);軟件方法一般都采用數(shù)學(xué)公式法。至今關(guān)于隨機(jī)數(shù)發(fā)

11、生器有很多的理論和方法,其中除了傳統(tǒng)的Fibonacci法、平方取中法、線性同余法、位移寄存器法和組合方法外,最近還有非線性同余法、取小數(shù)法、進(jìn)位加和錯(cuò)位減法、廣義反饋位移寄存器法等等。盡管這個(gè)領(lǐng)域己經(jīng)有很多的理論研究,但是仍存在很多的實(shí)際問題,甚至最近提出的隨機(jī)數(shù)發(fā)生器也有一些缺點(diǎn)。近年來在計(jì)算機(jī)中,比較廣泛使用的方法就是同余法,而在高級(jí)程序設(shè)計(jì)語言中常采用線性同余法。每次生成的偽隨機(jī)數(shù)需要滿足獨(dú)立的條件及給定分布函數(shù)的要求,但高級(jí)程序設(shè)計(jì)語言中提供的庫函數(shù)產(chǎn)生的偽隨機(jī)數(shù)都是滿足一定條件的均勻分布隨機(jī)數(shù),且在同一次程序運(yùn)行中,每次產(chǎn)生的偽隨機(jī)數(shù)是完全相同的。通過在微機(jī)上對(duì)用乘同余法和混合同余

12、法產(chǎn)生的隨機(jī)數(shù)進(jìn)行大量的試驗(yàn), 發(fā)現(xiàn)通過適當(dāng)選擇算法中的各常量, 用這兩種方法產(chǎn)生的隨機(jī)數(shù),其分布特性一般容易通過統(tǒng)計(jì)撿驗(yàn)。用隨機(jī)模擬方法解決實(shí)際問題時(shí),首先要清楚隨機(jī)數(shù)的產(chǎn)生方法,或者說是隨機(jī)變量的抽樣方法。1基本概念和定理 定義1: 設(shè)隨機(jī)變量,則稱隨機(jī)變量隨機(jī)抽樣序列為分布的隨機(jī)數(shù)。 若,則稱來自的隨機(jī)抽樣序列為正態(tài)分布隨機(jī)數(shù);若服從指數(shù)分布,則稱為指數(shù)分布的隨機(jī)數(shù);若區(qū)間均勻分布,則稱為區(qū)間上的均勻分布隨機(jī)數(shù)。 定理1 設(shè)是連續(xù)且嚴(yán)格單調(diào)上升的分布函數(shù),它的反函數(shù)存在,且記為即。若隨機(jī)變量的分布函數(shù)為,則。若隨機(jī)變量,則的分布函數(shù)為。推論 已知,設(shè)是一個(gè)分布函數(shù),且反函數(shù)存在,則。 定

13、理2:設(shè)服從二點(diǎn)分布相互獨(dú)立,且令 =+(用二進(jìn)制表示) 則定義2:(準(zhǔn)均勻分布) 設(shè)離散隨機(jī)變量的概率密度為: 則稱為準(zhǔn)均勻分布,且。2 偽隨機(jī)數(shù)顯然,用計(jì)算機(jī)只能產(chǎn)生準(zhǔn)均勻隨機(jī)分布數(shù),但是當(dāng)很大時(shí),和均勻隨機(jī)變量的統(tǒng)計(jì)性質(zhì)差異很小,可以把準(zhǔn)均勻隨機(jī)數(shù)做偽均勻隨機(jī)數(shù)。二、產(chǎn)生隨機(jī)數(shù)的一般方法2.1 取中法2.1.1 平方取中法平方取中法又稱自然取中法,首先由Von Neuman于1940年提出, 此法開始取一個(gè) 2 位十進(jìn)制整數(shù)作為種子,將其平方得到的一個(gè)4位數(shù)(不足4位的高位補(bǔ)0),然后取該4位中間 2位作為下一種子數(shù),并對(duì)此數(shù)進(jìn)行規(guī)格化(化成小于1的2位的實(shí)數(shù)值),依上述過程類推便得到一

14、維隨機(jī)數(shù)列。其一般的遞推公式是:的中間2位數(shù)字;按此公式依次得到一列數(shù)據(jù),然后把這列數(shù)據(jù)的每一個(gè)元素都除以 ,可得到0,1區(qū)間上均勻分布的隨機(jī)數(shù)列。2.1.2乘積取中法乘積取中法是通過平方取中法改進(jìn)得到的一種產(chǎn)生隨機(jī)數(shù)的方法,其一般遞推公式為:式中:第 n+1 個(gè)十進(jìn)制的正整數(shù);第 n+1 個(gè)偽隨機(jī)數(shù)。 此方法雖然簡單,但均勻性不好,且序列很快趨于零,其長度難以確定,故目前已很少使用。2.2 同余發(fā)生器該發(fā)生方法是目前應(yīng)用最廣泛的方法之一,通常我們把它簡稱為LCG(Linear Congruence Generator)方法,它是由 Lehmer 在1951年提出的。此方法是利用數(shù)論中的同余運(yùn)

15、算來產(chǎn)生隨機(jī)數(shù)的,故稱之為同余發(fā)生器。LCG 方法的一般遞推公式為: 其中初值為,為模數(shù),為乘子(乘數(shù)),為增量(加數(shù)),且,均為非負(fù)整數(shù)。顯然由上式得到的(=1,2,)滿足:。從而。當(dāng)然,遞推公式中的參數(shù),的選擇十分關(guān)鍵。否則,進(jìn)行了一定次數(shù)的迭代之后會(huì)出現(xiàn)短周期的重復(fù)現(xiàn)象,因而我們應(yīng)慎重選取。當(dāng)參數(shù),選擇不同時(shí),對(duì)應(yīng)的方法會(huì)有稍稍的不同,具體的討論如下:2.2.1混合同余法當(dāng)上面的式中參數(shù)0,1時(shí),則稱之為混合同余法,或者稱為混合式LCG。2.2.2乘同余法 當(dāng)式中=0時(shí)的LCG方法稱為乘同余法,或是積式發(fā)生器。具體表示式如下: ,初值為。2.2.3加同余法當(dāng)式中時(shí),稱之為加同余法。具體表

16、示式為:,初值為雖說此方法可于以達(dá)到最大的周期,而且計(jì)算機(jī)實(shí)現(xiàn)比較方便。但是和上面的混合同余法、乘同余法對(duì)比,驗(yàn)證得出:該方法得到的隨機(jī)數(shù)列性質(zhì)相對(duì)較差。所以,一般常用的是混合同余法和乘同余法。2.3反饋位移寄存器法隨著 LCG 方法的應(yīng)用,人們漸漸發(fā)現(xiàn)其缺陷并開始尋找新的隨機(jī)數(shù)發(fā)生方法。因此,通過大家的努力,在1965年以 Tausworthe 的相關(guān)論文為基礎(chǔ),出現(xiàn)了幾種比較好的隨機(jī)數(shù)發(fā)生器。它的主要原理是通過對(duì)寄存器進(jìn)行位移,直接在存儲(chǔ)單元中形成隨機(jī)數(shù)。我們稱這種方法為反饋位移寄存器法(Feedback Shift Register Methods),簡稱之為 FSR 方法。其線性遞推公

17、式為: 其中為給定正整數(shù),或?yàn)榻o定的常數(shù)。1971年,Toot hill、Robinson 和 Adams 又給出了 FSR 的另一遞推公式: 其中是次數(shù)小于的且系數(shù)為0或1的多項(xiàng)式。而且0為正整數(shù)。三、偽均勻隨機(jī)數(shù)的統(tǒng)計(jì)檢驗(yàn)偽均勻隨機(jī)數(shù)的有效性在于它們與真正的區(qū)間上均勻隨機(jī)數(shù)的性質(zhì)是否有顯著差異。這是一個(gè)重要的問題。因?yàn)槎呷粲酗@著差異,這時(shí)以這種隨機(jī)數(shù)發(fā)生器產(chǎn)生的隨機(jī)數(shù)為基礎(chǔ)的隨機(jī)變量所得到的樣本就不能夠反映該隨機(jī)變量的性質(zhì),從而無法得到可靠的隨機(jī)模擬結(jié)果。因此隨機(jī)數(shù)發(fā)生器的檢驗(yàn)是一項(xiàng)很重要的工作。一般情況下,會(huì)有兩種不同的檢驗(yàn)方法:經(jīng)驗(yàn)檢驗(yàn)和理論檢驗(yàn)。經(jīng)驗(yàn)檢驗(yàn)是一種統(tǒng)計(jì)檢驗(yàn),它是以發(fā)生器

18、產(chǎn)生的均勻隨機(jī)數(shù)序列為基礎(chǔ)的,根據(jù)區(qū)間上均勻總體簡單隨機(jī)樣本的性質(zhì),如特征向量、均勻性、隨機(jī)性等,研究我們產(chǎn)生的隨機(jī)序列的相應(yīng)性質(zhì),進(jìn)行比較、借鑒、視其差異是否顯著決定取舍。理論檢驗(yàn)從統(tǒng)計(jì)意義上說并不是一種檢驗(yàn),它用一種綜合的方法來評(píng)估發(fā)生器的參數(shù)值,而根本不必產(chǎn)生任何隨機(jī)數(shù)序列,即它只是一種理論上的研究。由于理論檢驗(yàn)方法需要專門學(xué)科的知識(shí),數(shù)學(xué)上又相當(dāng)難,我們這里只討論經(jīng)驗(yàn)檢驗(yàn)的幾種方法,通常稱為統(tǒng)計(jì)檢驗(yàn)。3.1 檢驗(yàn)步驟首先假設(shè)總體具有某種統(tǒng)計(jì)特性,然后由樣本值檢驗(yàn)這個(gè)假設(shè)是否可信,此法又稱假設(shè)檢驗(yàn),具體步驟如下:提出假設(shè):總體分布為;選取適當(dāng)?shù)慕y(tǒng)計(jì)量,其中是樣本,并求出在成立時(shí)的分布;給

19、定顯著水平,確定檢驗(yàn)方法,即給出否定域:使得 由觀測值(樣本值)計(jì)算值;做統(tǒng)計(jì)判斷,當(dāng)時(shí)否定;當(dāng)時(shí),相容。3.2 檢驗(yàn)統(tǒng)計(jì)量 根據(jù)中心極限定理得到近似正態(tài)分布統(tǒng)計(jì)量設(shè)是相互獨(dú)立同分布,且,記=,則以為極限分布。統(tǒng)計(jì)量將總體的簡單子樣按一定規(guī)則分為互不相交的個(gè)組,記第組的觀測頻數(shù)為,若隨機(jī)變量屬于第組的概率為,記理論頻數(shù),由構(gòu)造統(tǒng)計(jì)量漸進(jìn)服從,其中是附加在概率分布上獨(dú)立約束條件的個(gè)數(shù)即確定概率時(shí)利用樣本估計(jì)總體參數(shù)的個(gè)數(shù),當(dāng)時(shí),。3.3 統(tǒng)計(jì)檢驗(yàn)方法3.3.1參數(shù)檢驗(yàn)均勻隨機(jī)數(shù)的參數(shù)檢驗(yàn)是檢驗(yàn)由某個(gè)發(fā)生器產(chǎn)生的隨機(jī)數(shù)序列的均值、方差和各階矩陣等與均勻分布的理論值是否有顯著差異。若隨機(jī)變量,則若是

20、均勻總體的簡單隨機(jī)樣本,即相互獨(dú)立同分布,記,。則有: ;。設(shè)是某個(gè)發(fā)生器產(chǎn)生的隨機(jī)數(shù),首先對(duì)特征量作統(tǒng)計(jì)檢驗(yàn)。在是均勻總體的簡單隨機(jī)樣本的假設(shè)下,統(tǒng)計(jì)量 漸進(jìn)服從。給定顯著性水平后,查標(biāo)準(zhǔn)正態(tài)數(shù)值表得:(),否定域。由隨機(jī)數(shù)序列計(jì)算的值,若,則認(rèn)為產(chǎn)生的隨機(jī)數(shù)序列的特征向量與均勻總體的特征量沒有顯著差異;否則,由于的特征量與均勻總體的特征量有顯著差異,故不能認(rèn)為是均勻總體的簡單樣本。我們用SPSS做參數(shù)檢驗(yàn)時(shí)用單樣本t檢驗(yàn)。單樣本t檢驗(yàn)的目的是利用來自某總體的樣本數(shù)據(jù),推斷該樣本的均值是否與指定的檢驗(yàn)值之間存在顯著差異。它是對(duì)總體均值的假設(shè)檢驗(yàn)。單樣本t檢驗(yàn)的原假設(shè)為:總體均值與檢驗(yàn)值之間不

21、存在顯著差異,表述為:,為總體均值,為檢驗(yàn)值。對(duì)單個(gè)總體均值的推斷是建立在單個(gè)樣本均值基礎(chǔ)上的,也就是希望利用樣本均值去估計(jì)總體均值。構(gòu)造t檢驗(yàn)統(tǒng)計(jì)量為:,其中為樣本方差。式中,t統(tǒng)計(jì)量服從n-1個(gè)自由度的t分布。SPSS將自動(dòng)計(jì)算出t統(tǒng)計(jì)量的觀測值和對(duì)應(yīng)的概率P-值。給定顯著性水平,與檢驗(yàn)統(tǒng)計(jì)量的概率P-值比較。若概率P-值小于顯著性水平,則應(yīng)拒絕原假設(shè),認(rèn)為總體均值與檢驗(yàn)值之間存在顯著差異;反之,則不應(yīng)拒絕原假設(shè),認(rèn)為總體均值與檢驗(yàn)值之間無顯著差異。3.3.2均勻性檢驗(yàn) 隨機(jī)數(shù)的均勻檢驗(yàn)又稱為頻率檢驗(yàn),它用來檢驗(yàn)由某個(gè)發(fā)生器產(chǎn)生的隨機(jī)數(shù)序列是否均勻的分布在區(qū)間上。也就是檢驗(yàn)經(jīng)驗(yàn)頻率與理論頻

22、率的差異是否顯著。 檢驗(yàn) 卡方檢驗(yàn)基本思想的理論依據(jù)是:如果從一個(gè)隨機(jī)變量中隨機(jī)抽取若干個(gè)觀察樣本,這些觀察樣本落在的個(gè)互不相交的子集中的觀察頻數(shù)服從一個(gè)多項(xiàng)分布,這個(gè)多項(xiàng)分布在趨向于無窮時(shí)近似服從卡方分布。設(shè)使待檢驗(yàn)的一組隨機(jī)數(shù),假設(shè):為均勻總體的簡單樣本。 將區(qū)間分為個(gè)小區(qū)間,以表示第個(gè)小區(qū)間,設(shè)落入第個(gè)小區(qū)間的數(shù)目為。 根據(jù)均勻性假設(shè),落入每個(gè)小區(qū)間的概率為,第個(gè)小區(qū)間的理論頻數(shù),統(tǒng)計(jì)量漸進(jìn)服從,給定顯著性水平,查分布表得臨界值后,即可對(duì)經(jīng)驗(yàn)頻率與理論頻率的差異作顯著性檢驗(yàn)。若的概率P-值小于顯著性水平,則應(yīng)拒絕原假設(shè),認(rèn)為樣本來自的總體分布與期望分布或某一理論分布存在顯著差異;反之,則

23、不能拒絕原假設(shè),可以認(rèn)為樣本來自的總體分布與期望分布或某一理論分布不存在顯著差異。K-S檢驗(yàn)(柯氏檢驗(yàn))K-S(柯爾莫哥洛夫-斯米爾諾夫)檢驗(yàn)的原假設(shè)是:樣本來自的總體與指定的理論分布無顯著差異。其基本思路是:首先,在原假設(shè)成立的前提下,計(jì)算各樣本觀測值在理論分布中出現(xiàn)的累計(jì)概率值;其次,計(jì)算各樣本觀測值的實(shí)際累計(jì)概率值;計(jì)算實(shí)際累計(jì)概率值與理論累計(jì)概率值的差;最后,計(jì)算差值序列中最大絕對(duì)差值,即。統(tǒng)計(jì)量也稱為K-S統(tǒng)計(jì)量。在小樣本下,原假設(shè)成立時(shí),統(tǒng)計(jì)量服從柯氏分布。在大樣本下,原假設(shè)成立時(shí),近似服從分布:當(dāng)小于0時(shí),為0;當(dāng)大于0時(shí),=若統(tǒng)計(jì)量的概率P-值小于顯著性水平,則應(yīng)拒絕原假設(shè),認(rèn)

24、為樣本來自的總體分布與給定的分布存在顯著差異;反之,則不能拒絕原假設(shè),可以認(rèn)為樣本來自的總體分布與給定的分布不存在顯著差異。 序列檢驗(yàn)(Serial test)序列檢驗(yàn)實(shí)際上是用于多維分布的均勻性檢驗(yàn),它也間接地檢驗(yàn)序列的獨(dú)立性。已知隨機(jī)數(shù)序列,將容量為的隨機(jī)數(shù)一次配對(duì)為: 如果是均勻隨機(jī)數(shù)序列,那么他們應(yīng)該構(gòu)成平面上正方形內(nèi)的二維均勻隨機(jī)向量的樣本。將單位正方形分成個(gè)等面積的小正方形,表示落入第個(gè)小正方形的頻數(shù);理論頻數(shù)。則檢驗(yàn)統(tǒng)計(jì)量在為均勻分布的獨(dú)立抽樣序列成歷史漸進(jìn)的服從。以上二維的序列檢驗(yàn)可以推廣到三維、四維直至一般的維。即對(duì)依次用不相交的階組合:,它們應(yīng)該是在單位維超立方體中均勻分布

25、的獨(dú)立隨機(jī)樣本。把區(qū)間分為個(gè)相等的小區(qū)間,相應(yīng)地把單位維超立方體分成個(gè)小立方體,用表示落入第個(gè)超立方體的個(gè)數(shù)。統(tǒng)計(jì)量漸進(jìn)服從。這種維均勻分布的檢驗(yàn)(序列檢驗(yàn))間接地檢驗(yàn)了的獨(dú)立性。3.3.3獨(dú)立性檢驗(yàn) 獨(dú)立性檢驗(yàn)主要檢驗(yàn)隨機(jī)數(shù)序列之間的統(tǒng)計(jì)相關(guān)性是否顯著。它通常包括以下幾種檢驗(yàn)方法: 相關(guān)系數(shù)檢驗(yàn) 兩個(gè)隨機(jī)變量的相關(guān)系數(shù)反映它們之間線性相關(guān)程度,若兩個(gè)隨機(jī)變量獨(dú)立,則它們的相關(guān)系數(shù)必為零(反之不一定),故可以利用相關(guān)系數(shù)檢驗(yàn)隨機(jī)數(shù)的獨(dú)立性。設(shè)是待檢驗(yàn)的一組隨機(jī)數(shù),原假設(shè):相關(guān)系數(shù)??紤]樣本的階自相關(guān)系數(shù) 相關(guān)系數(shù)范圍為:,當(dāng)時(shí),表示變量的線性相關(guān)性較弱。SPSS將自動(dòng)計(jì)算自相關(guān)系數(shù)及標(biāo)準(zhǔn)誤差,

26、概率P-值,若檢驗(yàn)統(tǒng)計(jì)量的概率P-值小于給定的顯著性水平,應(yīng)拒絕原假設(shè),認(rèn)為變量存在線性相關(guān)性;若相反,則不應(yīng)拒絕原假設(shè),認(rèn)為變量間不存在線性相關(guān)性。當(dāng)充分大,且成立時(shí),漸進(jìn)服從分布。利用統(tǒng)計(jì)量可以進(jìn)行相關(guān)性檢驗(yàn)。 相關(guān)系數(shù)檢驗(yàn) 另外,的階自相關(guān)系數(shù)還可以定義為: 其中,。 記,則可以證明:,這時(shí)檢驗(yàn)假設(shè)可以用檢驗(yàn)假設(shè)來代替。統(tǒng)計(jì)檢驗(yàn)量為:利用統(tǒng)計(jì)量可進(jìn)行相關(guān)性檢驗(yàn)。 列聯(lián)表檢驗(yàn)在平面上,將單位正方形分成個(gè)相等的小正方形,把個(gè)隨機(jī)數(shù)按先后順序兩兩分組,例如?。?,其中,為大于1的正數(shù)。記這些數(shù)對(duì)落入第個(gè)小正方形內(nèi)的數(shù)目為令:, 用表示落入第個(gè)小正方形內(nèi)的概率。當(dāng)獨(dú)立性假設(shè)成立時(shí), 其中,表示隨機(jī)

27、數(shù)落入第列的概率,表示落入第行的概率。用最大似然法可得: 檢驗(yàn)統(tǒng)計(jì)量:漸進(jìn)服從,其中是用樣本來估計(jì)的個(gè)數(shù),故,所以。3.3.4其他經(jīng)驗(yàn)檢驗(yàn)如最值檢驗(yàn),最值檢驗(yàn)主要是檢驗(yàn)偽均勻隨機(jī)數(shù)序列的最大值和最小值。四、實(shí)例分析 本文利用Matlab中的Rand函數(shù)來產(chǎn)生隨機(jī)數(shù)序列并運(yùn)用作者學(xué)過的SPSS統(tǒng)計(jì)軟件對(duì)隨機(jī)數(shù)序列做統(tǒng)計(jì)檢驗(yàn)。4.1 數(shù)據(jù)產(chǎn)生及錄入打開Matlab,在工作窗口輸入指令:shuju=1*rand(1000,1)+0,點(diǎn)擊“Enter”即得到1000個(gè)數(shù)據(jù)。而由于SPSS無法直接讀取MATLAB data file格式的數(shù)據(jù),因此我們先將產(chǎn)生的隨機(jī)數(shù)導(dǎo)入一個(gè)電子表格中,命名為“shuj

28、u”這樣,SPSS就可以直接讀取了,步驟為:選擇菜單【File】-【Open】-【Data】,選擇數(shù)據(jù)文件的類型“.xls”,并輸入文件名“shuju”,出現(xiàn)下圖: 我們默認(rèn)將Excel工作表中的全部數(shù)據(jù)讀入,直接點(diǎn)擊“ok”。得到界面如下: 4.2 參數(shù)檢驗(yàn)-單樣本t檢驗(yàn)單樣本t檢驗(yàn)在本例中的原假設(shè)可以表述為:=0.5。操作步驟:選擇菜單【Analyze】-【Compare Means】-【One-samples T Test】出現(xiàn)如下圖所示的窗口:將數(shù)據(jù)選擇到【Test Variable(s)】,并將【Test Value】中的0改為0.5,點(diǎn)擊“ok”,得到以下結(jié)果:由第一張表可知:Ma

29、tlab產(chǎn)生的1000個(gè)01之間的隨機(jī)數(shù)的均值是0.51723,標(biāo)準(zhǔn)差是0.28536,均值標(biāo)準(zhǔn)誤差是0.09024。從第二張表我們看到這組數(shù)的t統(tǒng)計(jì)量的觀測值是1.909,自由度為999,t統(tǒng)計(jì)量的雙尾概率P值是0.057,顯然P (=0.05),則不應(yīng)拒絕原假設(shè),即認(rèn)為總體均值與檢驗(yàn)值之間無顯著差異:樣本均值與檢驗(yàn)值的差是0.01723(它除以均值標(biāo)準(zhǔn)誤差0.09024后得到t統(tǒng)計(jì)量的觀測值),最后兩列是總體均值與原假設(shè)值差的95%的置信區(qū)間為(-0.00048,0.03494),由此計(jì)算出總體均值的95%的置信區(qū)間為(0.49952,0.53494),這表示我們有95%的把握認(rèn)為總體均值

30、在0.499520.53494之間,0.5包含在這個(gè)區(qū)間內(nèi),這也證明了總體均值與檢驗(yàn)值之間無顯著差異。4.3均勻性檢驗(yàn)-卡方檢驗(yàn)本例中卡方檢驗(yàn)的原假設(shè)可以表述為:樣本數(shù)據(jù)的分布與(0,1)上的均勻分布無顯著差異。但在做卡方檢驗(yàn)之前,需要將數(shù)據(jù)分組。我們將這1000個(gè)數(shù)據(jù)分為十組,即各組為:00.10000、0.100010.20000、0.200010.30000、0.900011。操作步驟如下:選擇菜單【Tansform】-【Recode】-【Into Different Variables】,選擇分組變量到【Numeric Variable-Output】框中,在【Output Varia

31、ble】框中的【Name】后輸入存放分組結(jié)果的變量名,并按“change”確認(rèn)。也可在【Lable】后輸入相應(yīng)的變量名標(biāo)簽,再按“Old and New values”按鈕進(jìn)行分組區(qū)間的定義。如下圖:然后進(jìn)行卡方檢驗(yàn)。操作步驟如下:選擇菜單【Analyze】-【Nonparametric Tests】-【Chi-Square】,出現(xiàn)如下窗口:選擇待檢驗(yàn)的變量到【Test Variable List】框中。在【Expected Values】框中給出理論值,我們默認(rèn)為“All categories equal”(即表示所有子集的頻數(shù)都相等)。得到下表:第一個(gè)表的第二列是指每組的頻數(shù),第三列是理論

32、頻數(shù),第四列是實(shí)際頻數(shù)與理論頻數(shù)的差;第二個(gè)表是計(jì)算的卡方統(tǒng)計(jì)量以及對(duì)應(yīng)的概率P-值,若選擇的顯著水平是0.05,由于概率P-值大于,表示實(shí)際分布與理論分布無顯著差異,即數(shù)據(jù)是均勻的分布在各個(gè)區(qū)間上的。同時(shí),我們也可以對(duì)數(shù)據(jù)進(jìn)行頻數(shù)分析,繪制出條形圖和圓餅圖: 從圖形中,我們更直觀的看到數(shù)據(jù)分布接近均勻。4.4獨(dú)立性檢驗(yàn)本例中相關(guān)系數(shù)檢驗(yàn)的原假設(shè)可以表述為:相關(guān)系數(shù)=0。操作步驟如下:選擇菜單【Graphs】-【Time Series】-【Autocorrelations】選擇變量到【Variables】,如下圖所示:點(diǎn)擊【Options】對(duì)話框,選擇最大滯后數(shù)16,得到下圖:從兩張表中可以看

33、出,隨機(jī)數(shù)序列的自相關(guān)系數(shù)和偏自相關(guān)系數(shù)幾乎為零。設(shè)定顯著性水平=0.05,從表中看出:概率P-值大于顯著性水平,因此不應(yīng)拒絕的原假設(shè),認(rèn)為變量無線性相關(guān)性。偏自相關(guān)系數(shù)接近于0,同時(shí)從圖中也可以看出,隨機(jī)數(shù)序列分布是很平穩(wěn)的。因此可以斷定變量是獨(dú)立的。4.5本章小結(jié)筆者在本章利用SPSS統(tǒng)計(jì)軟件對(duì)生成的0,1上的隨機(jī)數(shù)進(jìn)行了統(tǒng)計(jì)檢驗(yàn),包括參數(shù)檢驗(yàn),均勻性檢驗(yàn),獨(dú)立性檢驗(yàn)。筆者用Matlab生成的0,1上的偽均勻隨機(jī)數(shù)基本通過上述檢驗(yàn),即所生成的數(shù)據(jù)序列具有均勻隨機(jī)數(shù)的統(tǒng)計(jì)特性。五、結(jié)論隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,隨機(jī)數(shù)發(fā)生器的類型也越來越多,人們也越來越重視隨機(jī)數(shù)發(fā)生器的性能。理論研究者們從理

34、論方面對(duì)隨機(jī)數(shù)發(fā)生器給出了嚴(yán)格的驗(yàn)證。而應(yīng)用學(xué)者認(rèn)為純粹在理論方面的研究并不合理,于是他們給出了更為嚴(yán)格的統(tǒng)計(jì)檢驗(yàn)方法。隨機(jī)數(shù)發(fā)生器的好壞畢竟很難判斷,又由于它在不同領(lǐng)域的用途不盡相同,因此不同領(lǐng)域的人已經(jīng)建立了各自的均勻隨機(jī)數(shù)定義。比如,密碼學(xué)研究者主要考慮產(chǎn)生的密碼的安全性、可靠性,因此他們從兩個(gè)方面考慮隨機(jī)數(shù)序列,即一要求隨機(jī)數(shù)序列有極大的周期;二要求隨機(jī)數(shù)序列沒有任何可推斷的規(guī)律。這一方面他們給出了嚴(yán)格的定義。本文給出了隨機(jī)數(shù)的基本概念和定理,并給出生成隨機(jī)數(shù)的一般方法,及其統(tǒng)計(jì)檢驗(yàn)方法。另外,筆者以一組隨機(jī)數(shù)序列為例,利用SPSS給出了具體的統(tǒng)計(jì)檢驗(yàn)的詳細(xì)步驟,可供參考。筆者在設(shè)計(jì)本

35、論文時(shí),雖力求完美,但由于時(shí)間倉促、精力有限,資料的查閱還不夠全面,因此對(duì)于隨機(jī)數(shù)發(fā)生器的應(yīng)用方面和理論檢驗(yàn)涉及較少。 附錄資料:不需要的可以自行刪除 C語言圖形模式速成第一節(jié) 圖形模式的初始化Turbo C 提供了非常豐富的圖形函數(shù),所有圖形函數(shù)的原型均在graphics. h 中,本節(jié)主要介紹圖形模式的初始化、獨(dú)立圖形程序的建立、基本圖形功能、圖形窗口以及圖形模式下的文本輸出等函數(shù)。另外,使用圖形函數(shù)時(shí)要確保有顯示器圖形驅(qū)動(dòng)程序*.BGI,同時(shí)將集成開發(fā)環(huán)境options/Linker中的Graphics lib選為on,只有這樣才能保證正確使用圖形函數(shù)。 不同的顯示器適配器有不同的圖形分

36、辨率。即是同一顯示器適配器,在不同模式下也有不同分辨率。因此,在屏幕作圖之前,必須根據(jù)顯示器適配器種類將顯示器設(shè)置成為某種圖形模式,在未設(shè)置圖形模式之前,微機(jī)系統(tǒng)默認(rèn)屏幕為文本模式(80列,25行字符模式),此時(shí)所有圖形函數(shù)均不能工作。設(shè)置屏幕為圖形模式,可用下列圖形初始化函數(shù):void far initgraph(int far *gdriver, int far *gmode,char *path);其中g(shù)driver和gmode分別表示圖形驅(qū)動(dòng)器和模式,path是指圖形驅(qū)動(dòng)程序所在的目錄路徑。有關(guān)圖形驅(qū)動(dòng)器、圖形模式的符號(hào)常數(shù)及對(duì)應(yīng)的分辨率見graphics. h。圖形驅(qū)動(dòng)程序由Turb

37、o C出版商提供,文件擴(kuò)展名為.BGI。 根據(jù)不同的圖形適配器有不同的圖形驅(qū)動(dòng)程序。例如對(duì)于EGA、 VGA 圖形適配器就調(diào)用驅(qū)動(dòng)程序EGAVGA.BGI。#include stdio.h#include graphics.hint main()int gdriver, gmode;gdriver=VGA;gmode=VGAHI;initgraph(&gdriver, &gmode, C:TC2.0BGI);bar3d(100, 100, 300, 250, 50, 1); /*畫一長方體*/getch();closegraph();return 0;有時(shí)編程者并不知道所用的圖形顯示器適配器種

38、類,或者需要將編寫的程序用于不同圖形驅(qū)動(dòng)器,Turbo C 提供了一個(gè)自動(dòng)檢測顯示器硬件的函數(shù),其調(diào)用格式為:void far detectgraph(int *gdriver, *gmode);其中g(shù)driver和gmode的意義與上面相同。 自動(dòng)進(jìn)行硬件測試后進(jìn)行圖形初始化:#include stdio.h#include graphics.hint main()int gdriver, gmode;detectgraph(&gdriver, &gmode); /*自動(dòng)測試硬件*/printf(the graphics driver is %d, mode is %dn,gdriver,g

39、mode); /*輸出測試結(jié)果*/getch();initgraph(&gdriver, &gmode, C:TC2.0BGI);/* 根據(jù)測試結(jié)果初始化圖形*/bar3d(100, 100, 300, 250, 50, 1); /*畫一長方體*/getch();closegraph();return 0;上例程序中先對(duì)圖形顯示器自動(dòng)檢測,然后再用圖形初始化函數(shù)進(jìn)行初始化設(shè)置,但Turbo C提供了一種更簡單的方法, 即用gdriver=DETECT 語句后再跟initgraph()函數(shù)就行了。采用這種方法后,上例可改為:#include stdio.h#include graphics.hi

40、nt main()int gdriver=DETECT, gmode;initgraph(&gdriver, &gmode, C:TC2.0BGI);bar3d(50, 50, 150, 30, 50, 1);getch();closegraph();return 0;另外,Turbo C 提供了退出圖形狀態(tài)的函數(shù)closegraph(),其調(diào)用格式為:void far closegraph(void);第二節(jié) 屏幕顏色的設(shè)置和清屏函數(shù)對(duì)于圖形模式的屏幕顏色設(shè)置,同樣分為背景色的設(shè)置和前景色的設(shè)置。在Turbo C中分別用下面兩個(gè)函數(shù): 設(shè)置背景色: void far setbkcolor(i

41、nt color);設(shè)置作圖色: void far setcolor(int color);其中color 為圖形方式下顏色的規(guī)定數(shù)值,對(duì)EGA,VGA顯示器適配器,有關(guān)顏色的符號(hào)常數(shù)及數(shù)值見graphics.h。清除圖形屏幕內(nèi)容但不清除圖形背景使用清屏函數(shù),其調(diào)用格式如下: voide far cleardevice(void);#include stdio.h#include graphics.hint main()int gdriver, gmode, i,aa;gdriver=DETECT;initgraph(&gdriver, &gmode, C:TC2.0BGI); /*圖形初始化

42、*/setbkcolor(0); /*設(shè)置圖形背景*/cleardevice();for(i=0; i=15; i+)setcolor(i); /*設(shè)置不同作圖色*/circle(320, 240, 20+i*10); /*畫半徑不同的圓*/getch();for(i=0; i=15; i+)setbkcolor(i); /*設(shè)置不同背景色*/cleardevice();circle(320, 240, 20+i*10);getch();aa=getmaxcolor();printf(maxcolor=%d,aa);getch();closegraph();return 0;另外,TURBO

43、C也提供了幾個(gè)獲得現(xiàn)行顏色設(shè)置情況的函數(shù)。 int far getbkcolor(void); 返回現(xiàn)行背景顏色值。int far getcolor(void); 返回現(xiàn)行作圖顏色值。int far getmaxcolor(void); 返回最高可用的顏色值。第三節(jié) 基本畫圖函數(shù)基本圖形函數(shù)包括畫點(diǎn),線以及其它一些基本圖形的函數(shù)。本節(jié)對(duì)這些函數(shù)作一全面的介紹。 、畫點(diǎn). 畫點(diǎn)函數(shù) void far putpixel(int x, int y, int color); 該函數(shù)表示有指定的象元畫一個(gè)按color 所確定顏色的點(diǎn)。對(duì)于顏色color的值可從表3中獲得而對(duì)x, y是指圖形象元的坐標(biāo)。在

44、圖形模式下,是按象元來定義坐標(biāo)的。對(duì)VGA適配器,它的最高分辨率為640 x480,其中640為整個(gè)屏幕從左到右所有象元的個(gè)數(shù),480為整個(gè)屏幕從上到下所有象元的個(gè)數(shù)。屏幕的左上角坐標(biāo)為(0,0),右下角坐標(biāo)為(639, 479),水平方向從左到右為x 軸正向,垂直方向從上到下為y軸正向。TURBO C的圖形函數(shù)都是相對(duì)于圖形屏幕坐標(biāo),即象元來說的。關(guān)于點(diǎn)的另外一個(gè)函數(shù)是: int far getpixel(int x, int y); 它獲得當(dāng)前點(diǎn)(x, y)的顏色值。 II、有關(guān)坐標(biāo)位置的函數(shù) int far getmaxx(void);返回x軸的最大值。int far getmaxy(v

45、oid);返回y軸的最大值。int far getx(void); 返回游標(biāo)在x軸的位置。void far gety(void); 返回游標(biāo)有y軸的位置。void far moveto(int x, int y); 移動(dòng)游標(biāo)到(x, y)點(diǎn),不是畫點(diǎn),在移動(dòng)過程中亦畫點(diǎn)。void far moverel(int dx, int dy); 移動(dòng)游標(biāo)從現(xiàn)行位置(x, y)移動(dòng)到(x+dx, y+dy)的位置,移動(dòng)過程中不畫點(diǎn)。、畫線I. 畫線函數(shù)TURBO C提供了一系列畫線函數(shù): void far line(int x0, int y0, int x1, int y1); 畫一條從點(diǎn)(x0, y

46、0)到(x1, y1)的直線。void far lineto(int x, int y); 畫一作從現(xiàn)行游標(biāo)到點(diǎn)(x, y)的直線。void far linerel(int dx, int dy); 畫一條從現(xiàn)行游標(biāo)(x,y)到按相對(duì)增量確定的點(diǎn)(x+dx, y+dy)的直線。void far circle(int x, int y, int radius); 以(x, y)為圓心,radius為半徑,畫一個(gè)圓。void far arc(int x, int y, int stangle, int endangle,int radius); 以(x,y)為圓心,radius為半徑,從stang

47、le開始到endangle結(jié)束(用度表示)畫一段圓弧線。在TURBO C中規(guī)定x軸正向?yàn)? 度,逆時(shí)針方向旋轉(zhuǎn)一周, 依次為90,180, 270和360度(其它有關(guān)函數(shù)也按此規(guī)定,不再重述)。 void ellipse(int x, int y, int stangle, int endangle,int xradius,int yradius);以(x, y)為中心,xradius,yradius為x軸和y軸半徑,從角stangle 開始到endangle結(jié)束畫一段橢圓線,當(dāng)stangle=0,endangle=360時(shí), 畫出一個(gè)完整的橢圓。void far rectangle(int

48、x1, int y1, int x2, inty2); 以(x1, y1)為左上角,(x2, y2)為右下角畫一個(gè)矩形框。 void far drawpoly(int numpoints, int far *polypoints); 畫一個(gè)頂點(diǎn)數(shù)為numpoints,各頂點(diǎn)坐標(biāo)由polypoints給出的多邊形。polypoints整型數(shù)組必須至少有2 倍頂點(diǎn)數(shù)個(gè)無素。每一個(gè)頂點(diǎn)的坐標(biāo)都定義為x,y,并且x在前。值得注意的是當(dāng)畫一個(gè)封閉的多邊形時(shí),numpoints 的值取實(shí)際多邊形的頂點(diǎn)數(shù)加一,并且數(shù)組polypoints中第一個(gè)和最后一個(gè)點(diǎn)的坐標(biāo)相同。下面舉一個(gè)用drawpoly()函數(shù)畫

49、箭頭的例子。#include stdio.h#include graphics.hint main()int gdriver, gmode, i;int arw16=200,102,300,102,300,107,330,100,300,93,300,98,200,98,200,102;gdriver=DETECT;initgraph(&gdriver, &gmode, C:TC2.0BGI);setbkcolor(BLUE);cleardevice();setcolor(12); /*設(shè)置作圖顏色*/drawpoly(8, arw); /*畫一箭頭*/getch();closegraph()

50、;return 0;II、設(shè)定線型函數(shù)在沒有對(duì)線的特性進(jìn)行設(shè)定之前,TURBO C 用其默認(rèn)值,即一點(diǎn)寬的實(shí)線,但TURBO C 也提供了可以改變線型的函數(shù)。線型包括:寬度和形狀。其中寬度只有兩種選擇:一點(diǎn)寬和三點(diǎn)寬。而線的形狀則有五種。下面介紹有關(guān)線型的設(shè)置函數(shù)。void far setlinestyle(int linestyle,unsigned upattern,int thickness);該函數(shù)用來設(shè)置線的有關(guān)信息,其中l(wèi)inestyle是線形狀的規(guī)定,見graphics.h。對(duì)于upattern,只有l(wèi)inestyle選USERBIT_LINE 時(shí)才有意義 (選其它線型,uppa

51、ttern取0即可)。此時(shí)uppattern的16位二進(jìn)制數(shù)的每一位代表一個(gè)象元,如果那位為1,則該象元打開,否則該象元關(guān)閉。 void far getlinesettings(struct linesettingstypefar *lineinfo);該函數(shù)將有關(guān)線的信息存放到由lineinfo 指向的結(jié)構(gòu)中,表中l(wèi)inesettingstype的結(jié)構(gòu)如下:struct linesettingstypeint linestyle;unsigned upattern;int thickness;例如下面兩句程序可以讀出當(dāng)前線的特性 struct linesettingstype *info;g

52、etlinesettings(info);void far setwritemode(int mode);該函數(shù)規(guī)定畫線的方式。如果mode=0,則表示畫線時(shí)將所畫位置的原來信息覆蓋了(這是TURBO C的默認(rèn)方式)。如果mode=1, 則表示畫線時(shí)用現(xiàn)在特性的線與所畫之處原有的線進(jìn)行異或(XOR)操作,實(shí)際上畫出的線是原有線與現(xiàn)在規(guī)定的線進(jìn)行異或后的結(jié)果。因此,當(dāng)線的特性不變,進(jìn)行兩次畫線操作相當(dāng)于沒有畫線。有關(guān)線型設(shè)定和畫線函數(shù)的例子如下所示。#include stdio.h#include graphics.hint main()int gdriver, gmode, i;gdriver

53、=DETECT;initgraph(&gdriver, &gmode, C:TC2.0BGI);setbkcolor(BLUE);cleardevice();setcolor(GREEN);circle(320, 240, 98);setlinestyle(0, 0, 3); /*設(shè)置三點(diǎn)寬實(shí)線*/setcolor(2);rectangle(220, 140, 420, 340);setcolor(WHITE);setlinestyle(4, 0 xaaaa, 1);/*設(shè)置一點(diǎn)寬用戶定義線*/line(220, 240, 420, 240);line(320, 140, 320, 340);

54、getch();closegraph();return 0;第四節(jié) 基本圖形的填充填充就是用規(guī)定的顏色和圖模填滿一個(gè)封閉圖形。 一般是先畫輪廓再填充。TURBO C提供了一些先畫出基本圖形輪廓, 再按規(guī)定圖模和顏色填充整個(gè)封閉圖形的函數(shù)。在沒有改變填充方式時(shí),TURBO C 以默認(rèn)方式填充。 void far bar(int x1, int y1, int x2, int y2);確定一個(gè)以(x1,y1)為左上角,(x2,y2)為右下角的矩形窗口,再按規(guī)定圖模和顏色填充。說明:此函數(shù)不畫出邊框,所以填充色為邊框。void far bar3d(int x1, int y1, int x2, in

55、t y2,int depth,int topflag);當(dāng)topflag為非0時(shí), 畫出一個(gè)三維的長方體。當(dāng)topflag為0時(shí),三維圖形不封頂,實(shí)際上很少這樣使用。說明: bar3d()函數(shù)中,長方體第三維的方向不隨任何參數(shù)而變,即始終為45度的方向。void far pieslice(int x,int y,int stangle,int endangle,int radius);畫一個(gè)以(x, y)為圓心,radius為半徑,stangle為起始角度,endangle 為終止角度的扇形,再按規(guī)定方式填充。當(dāng)stangle=0,endangle=360 時(shí)變成一個(gè)實(shí)心圓,并在圓內(nèi)從圓點(diǎn)沿X

56、軸正向畫一條半徑。void far sector(int x, int y,int stanle,intendangle,int xradius, int yradius);畫一個(gè)以(x, y)為圓心分別以xradius, yradius為x軸和y軸半徑,stangle 為起始角,endangle為終止角的橢圓扇形,再按規(guī)定方式填充。第五節(jié) 設(shè)定填充方式TURBO C有四個(gè)與填充方式有關(guān)的函數(shù)。下面分別介紹: void far setfillstyle(int pattern, int color); color的值是當(dāng)前屏幕圖形模式時(shí)顏色的有效值。pattern的值及與其等價(jià)的符號(hào)常數(shù)見gr

57、aphics.h。除USER_FILL(用戶定義填充式樣)以外,其它填充式樣均可由setfillstyle() 函數(shù)設(shè)置。當(dāng)選用USER_FILL時(shí),該函數(shù)對(duì)填充圖模和顏色不作任何改變。 之所以定義USER_FILL主要因?yàn)樵讷@得有關(guān)填充信息時(shí)用到此項(xiàng)。void far setfillpattern(char * upattern,int color); 設(shè)置用戶定義的填充圖模的顏色以供對(duì)封閉圖形填充。其中upattern是一個(gè)指向8個(gè)字節(jié)的指針。這8個(gè)字節(jié)定義了8x8點(diǎn)陣的圖形。每個(gè)字節(jié)的8位二進(jìn)制數(shù)表示水平8點(diǎn),8個(gè)字節(jié)表示8行,然后以此為模型向個(gè)封閉區(qū)域填充。void far getfi

58、llpattern(char * upattern); 該函數(shù)將用戶定義的填充圖模存入upattern指針指向的內(nèi)存區(qū)域。void far getfillsetings(struct fillsettingstypefar * fillinfo); 獲得現(xiàn)行圖模的顏色并將存入結(jié)構(gòu)指針變量fillinfo中。其中fillsettingstype結(jié)構(gòu)定義如下:struct fillsettingstypeint pattern; /* 現(xiàn)行填充模式 * /int color; /* 現(xiàn)行填充模式 * /; 有關(guān)圖形填充圖模的顏色的選擇,請看下面例程。#include stdio.h#include

59、 graphics.hmain()char str8=10,20,30,40,50,60,70,80; /*用戶定義圖模*/int gdriver,gmode,i;struct fillsettingstype save;/*定義一個(gè)用來存儲(chǔ)填充信息的結(jié)構(gòu)變量*/gdriver=DETECT;initgraph(&gdriver,&gmode,C:TC2.0BGI);setbkcolor(BLUE);cleardevice();for(i=0;i13;i+)setcolor(i+3);setfillstyle(i,2+i); /* 設(shè)置填充類型 */bar(100,150,200,50); /

60、*畫矩形并填充*/bar3d(300,100,500,200,70,1); /* 畫長方體并填充*/pieslice(200, 300, 90, 180, 90);/*畫扇形并填充*/sector(500,300,180,270,200,100);/*畫橢圓扇形并填充*/getch();cleardevice();setcolor(14);setfillpattern(str, RED);bar(100,150,200,50);bar3d(300,100,500,200,70,0);pieslice(200,300,0,360,90);sector(500,300,0,360,100,50);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論