預(yù)備實(shí)驗(yàn)三實(shí)驗(yàn)報(bào)告_第1頁
預(yù)備實(shí)驗(yàn)三實(shí)驗(yàn)報(bào)告_第2頁
預(yù)備實(shí)驗(yàn)三實(shí)驗(yàn)報(bào)告_第3頁
預(yù)備實(shí)驗(yàn)三實(shí)驗(yàn)報(bào)告_第4頁
預(yù)備實(shí)驗(yàn)三實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

預(yù)備實(shí)驗(yàn)三實(shí)驗(yàn)報(bào)告-PAGE1HUNANUNIVERSITY課程實(shí)習(xí)報(bào)告題目隨機(jī)數(shù)生成學(xué)生姓名學(xué)生學(xué)號(hào) 專業(yè)班級(jí) 指導(dǎo)老師 2013年3月15日 一、需求分析本程序要求生成n個(gè)隨機(jī)數(shù)輸出在屏幕上,求出這n個(gè)數(shù)的平均數(shù)輸出在屏幕上。在Dos界面輸出n個(gè)隨機(jī)數(shù),以及這n個(gè)隨機(jī)數(shù)的平均值。因?yàn)樵诔绦蜻M(jìn)行的過程中,并不需要用戶進(jìn)行任何操作,所以本程序無測(cè)試數(shù)據(jù)。二、概要設(shè)計(jì) 抽象數(shù)據(jù)類型為實(shí)現(xiàn)上述程序的功能,應(yīng)以整型變量來存儲(chǔ)這n個(gè)隨機(jī)數(shù),以及計(jì)算出的結(jié)果。算法的基本思想根據(jù)題目要求,采用C語言中的隨機(jī)數(shù)生成函數(shù)rand()來生成隨機(jī)數(shù),用srand函數(shù)來提供種子。程序的流程程序由三個(gè)模塊組成:用C語言中的函數(shù)srand()和rand()來生成隨機(jī)數(shù)。用for循環(huán)對(duì)隨機(jī)數(shù)進(jìn)行累加操作,并求這n個(gè)隨機(jī)數(shù)的平均值。輸出這n個(gè)隨機(jī)數(shù)的平均值,并將其打印出來。三、詳細(xì)設(shè)計(jì)物理數(shù)據(jù)類型題目要求生成n個(gè)隨機(jī)數(shù),為了能夠存儲(chǔ),采用C語言中的整型int來定義變量。inti,sum=0,cur;

算法的具體步驟先定義三個(gè)整型變量i,sum,cur,一個(gè)單精度浮點(diǎn)型變量average。利用系統(tǒng)函數(shù)srand提供種子,利用系統(tǒng)函數(shù)rand來生成隨機(jī)數(shù)。(函數(shù)的具體實(shí)現(xiàn)方法見下文)利用for循環(huán)將產(chǎn)生的隨機(jī)數(shù)累加起來,由數(shù)學(xué)知識(shí):average=sum/n可求得這n個(gè)數(shù)的平均數(shù)。用printf輸出平均數(shù)。rand(),srand()函數(shù)的具體實(shí)現(xiàn)方法:(1)函數(shù)rand()是真正的隨機(jī)數(shù)生成器,而srand()會(huì)設(shè)置供rand()使用的隨機(jī)數(shù)種子。如果你在第一次調(diào)用rand()之前沒有調(diào)用srand(),那么系統(tǒng)會(huì)為你自動(dòng)調(diào)用srand()。而使用同種子相同的數(shù)調(diào)用srand()會(huì)導(dǎo)致相同的隨機(jī)數(shù)序列被生成。srand((unsigned)time(NULL))則使用系統(tǒng)定時(shí)/計(jì)數(shù)器的值做為隨機(jī)種子。每個(gè)種子對(duì)應(yīng)一組根據(jù)算法預(yù)先生成的隨機(jī)數(shù),所以,在相同的平臺(tái)環(huán)境下,不同時(shí)間產(chǎn)生的隨機(jī)數(shù)會(huì)是不同的,相應(yīng)的,若將srand(unsigned)time(NULL)改為srand(TP)(TP為任一常量),則無論何時(shí)運(yùn)行、運(yùn)行多少次得到的“隨機(jī)數(shù)”都會(huì)是一組固定的序列,因此srand生成的隨機(jī)數(shù)是偽隨機(jī)數(shù)。(2)rand()產(chǎn)生偽隨機(jī)數(shù),srand函數(shù)提供種子,種子不同產(chǎn)生的隨機(jī)數(shù)序列也不同,所以通常先調(diào)用srand函數(shù)time(0)返回的是系統(tǒng)的時(shí)間(從1970.1.1午夜算起),單位:秒,種子不同當(dāng)然產(chǎn)生的隨機(jī)數(shù)相同幾率就很小了。算法的時(shí)空分析算法的運(yùn)行時(shí)間依賴于隨機(jī)數(shù)n的個(gè)數(shù)??梢宰C明,產(chǎn)生的隨機(jī)數(shù)n越多,循環(huán)次數(shù)越多,從而算法的運(yùn)行時(shí)間也就越長(zhǎng)。輸入和輸出的格式printf("十個(gè)隨機(jī)數(shù)是"); for(i=0;i<10;i++){ a=rand(); sum+=a; printf("%d",a);} printf("\nAverageoftennumbersis%f\n",average);四、調(diào)試分析 略。五、測(cè)試結(jié)果 運(yùn)行結(jié)果截圖如下:第一組數(shù)據(jù):第二組數(shù)據(jù):六、用戶使用說明(可選)1、本程序的運(yùn)行環(huán)境為DOS操作系統(tǒng),執(zhí)行文件為3.exe2、運(yùn)行程序時(shí):(屏幕顯示內(nèi)容)十個(gè)隨機(jī)數(shù)是 Averageoftennumbersis七、實(shí)驗(yàn)心得(可選)在做了這個(gè)實(shí)驗(yàn)之后,發(fā)現(xiàn)C語言中有很多前人已經(jīng)定義好的函數(shù)可以供我們使用,這些寒是十分方便,若要能夠熟練的使用他們,關(guān)鍵在于要自己多花時(shí)間去學(xué)習(xí)這些函數(shù),這樣在使用的時(shí)候才能得心應(yīng)手。這個(gè)實(shí)驗(yàn)讓我對(duì)rand()和srand()函數(shù)有了更深的理解。庫(kù)函數(shù)中系統(tǒng)提供了兩個(gè)函數(shù)用于產(chǎn)生隨機(jī)數(shù):srand()和rand()。原型為:函數(shù)一:intrand(void);從srand(seed)中指定的seed開始,返回一個(gè)[0,RAND_MAX(0x7fff)]間的隨機(jī)整數(shù)。函數(shù)二:voidsrand(unsignedseed);參數(shù)seed是rand()的種子,用來初始化rand()的起始值。但是,要注意的是所謂的“偽隨機(jī)數(shù)”指的并不是假的隨機(jī)數(shù)。其實(shí)絕對(duì)的隨機(jī)數(shù)只是一種理想狀態(tài)的隨機(jī)數(shù),計(jì)算機(jī)只能生成相對(duì)的隨機(jī)數(shù)即偽隨機(jī)數(shù)。計(jì)算機(jī)生成的偽隨機(jī)數(shù)既是隨機(jī)的又是有規(guī)律的——一部份遵守一定的規(guī)律,一部份則不遵守任何規(guī)律。比如“世上沒有兩片形狀完全相同的樹葉”,這正點(diǎn)到了事物的特性——差異性;但是每種樹的葉子都有近似的形狀,這正是事物的共性——規(guī)律性。從這個(gè)角度講,我們就可以接受這樣的事實(shí)了:計(jì)算機(jī)只能產(chǎn)生偽隨機(jī)數(shù)而不是絕對(duì)的隨機(jī)數(shù)。系統(tǒng)在調(diào)用rand()之前都會(huì)自動(dòng)調(diào)用srand(),如果用戶在rand()之前曾調(diào)用過srand()給參數(shù)seed指定了一個(gè)值,那么rand()就會(huì)將seed的值作為產(chǎn)生偽隨機(jī)數(shù)的初始值;而如果用戶在rand()前沒有調(diào)用過srand(),那么系統(tǒng)默認(rèn)將1作為偽隨機(jī)數(shù)的初始值。如果給了一個(gè)定值,那么每次rand()產(chǎn)生的隨機(jī)數(shù)序列都是一樣的~~所以為了避免上述情況的發(fā)生我們通常用srand((unsigned)time(0))或者srand((unsigned)time(NULL))來產(chǎn)生種子。如果仍然覺得時(shí)間間隔太小,可以在(unsigned)time(0)或者(unsigned)time(NULL)后面乘上某個(gè)合適的整數(shù)。例如,srand((unsigned)time(NULL)*10)另外,關(guān)于time_ttime(0):time_t被定義為長(zhǎng)整型,它返回從1970年1月1日零時(shí)零分零秒到目前為止所經(jīng)過的時(shí)間,單位為秒。七、附錄(可選)#include<stdio.h>#include<stdlib.h>#include<time.h>intmain(){ inti,sum=0,a; floataverage; srand((unsigned)time(NULL)); printf("十個(gè)隨機(jī)數(shù)是"); for(i=0;i<10;i++){

溫馨提示

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

評(píng)論

0/150

提交評(píng)論