下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、淺析 C+語言中的隨機數(shù)的應(yīng)用摘要:該文針對 C+語言中的隨機數(shù)生成以及使用方 法進行分析和探討, 主要對各種隨機數(shù)的生成算法進行設(shè)計。在 C+中,隨機數(shù)的生成主要通過函數(shù)文件中的ramt ()和srand ()函數(shù)。首先,闡述 rarut ()和 srand ()兩種函數(shù) 共同的使用方法和模式,并分析了各自的缺點,然后以現(xiàn)實 中的問題和實際的題目為例,通過實際編程來闡釋隨機數(shù)生 成函數(shù)的使用方法,實現(xiàn)了不同概率的隨機數(shù)的產(chǎn)生、不連 續(xù)的隨機數(shù)的產(chǎn)生等方法。關(guān)鍵詞:隨機數(shù);偽隨機數(shù);種子;隨機數(shù)生成器 中圖分類號:TP311 文獻標識碼: A 文章編號: 1009-3044 ( 2017) 0
2、8-0098-031 概述經(jīng)過對 C+語言的學(xué)習(xí), 筆者發(fā)現(xiàn)書中對于隨機函數(shù)的 使用只是一概而過,沒有進行深入的闡釋和聯(lián)想。文獻是到 “其實計算機不會產(chǎn)生絕對隨機的隨機數(shù),只能產(chǎn)生“偽隨 機數(shù)”。其實絕對隨機的隨機數(shù)只是一種理想的隨機數(shù), 計 算機只能生成相對的隨機數(shù),即偽隨機數(shù)。實際上,系統(tǒng)是 將 032767 之間的整數(shù)“隨意”地排成了一個“隨機數(shù)表”, 程序第一次調(diào)用 rand ()函數(shù)是取“隨機數(shù)表”中的第一個, 第二次調(diào)用 rand ()函數(shù)是取“隨機數(shù)表”的第二個,由此 類推。即使我們運行了多次,但都是在同一個系統(tǒng)上,而同 一個系統(tǒng)產(chǎn)生的“隨機數(shù)表”又始終是相同的,因此每一次 運行
3、的結(jié)果都是一樣的。 ”現(xiàn)有文獻大都集中在介紹隨機函 數(shù)的用法,本文從實際應(yīng)用出發(fā),分析和研究各種不同類型 隨機數(shù)的生成算法,并進行實驗分析。2 隨機數(shù)的生成的原理(C+匡架下)2.1C+中隨機數(shù)的定義C+語言中使用 cstdlib 中的函數(shù) rand ()進行生成,但 生成的只是偽隨機數(shù)。因為 rand ()的內(nèi)部實現(xiàn)是用線性同 余法做成的,生成隨機數(shù)時,需要指定一個種子,用 srand ()來設(shè)置 rand ()產(chǎn)生隨機數(shù)時的隨機數(shù)種子,如果每次 srand ()都設(shè)相同值,rand ()所產(chǎn)生的隨機數(shù)值每次就會 一樣。通??梢岳?time(0)的返回值或NULL 來當做 seed, 這樣
4、可以輸出不同的隨機數(shù)。2.2 隨機數(shù)隨機重現(xiàn)試驗 線性同余法產(chǎn)生對隨機數(shù)是偽隨機數(shù),下面進行試驗, 測試具體偽隨機數(shù)的特點。通過圖 1 的實驗結(jié)果,可以發(fā)現(xiàn)當給予相同的隨機數(shù)函 數(shù)種子時,他會輸出相同的數(shù)字,這就是“偽隨機數(shù)”名字 的來歷。為了設(shè)計出不同的隨機函數(shù),C+引入函數(shù) time (0)(電腦上確切的時間) ,用 time( 0)作為種子,可以實現(xiàn)隨機數(shù)函數(shù)每次的種子都不同,從而產(chǎn)生出不同的隨機數(shù),讓 數(shù)字的產(chǎn)生更加接近隨機。2.3 驗證偽隨機數(shù)是否足夠隨機的實驗通過圖 2,由此看出 0-9 的各個數(shù)字,當隨機數(shù)數(shù)量足 夠多時,產(chǎn)生概率是近似相同的,因此Fang ()函數(shù)產(chǎn)生的偽隨機數(shù)
5、是可以近似看作隨機數(shù)的。3 隨機數(shù)常見的使用方法3.1 隨機數(shù)小數(shù)(不考慮進位)的產(chǎn)生隨機數(shù)產(chǎn)生器 rand ()是根據(jù)其后%n 中的 n 來確定產(chǎn) 生的數(shù)字的,會產(chǎn)生出所有小于 n 的整形數(shù)字(包括 0),由 于 C+語言中% (取余函數(shù))只能輸出整數(shù),所以隨機小數(shù)是 不能直接產(chǎn)生的,必須運用其他方式。從圖 3 可以看出,雖然 rand ()函數(shù)只能輸出整數(shù),但 通過除法運算,可以輸出小數(shù),再加上整數(shù)就可以輸出具有 大于 1 的隨機小數(shù),通過實驗結(jié)果可以證明算法的正確性。3.2 隨機數(shù)小數(shù)(考慮進位)的產(chǎn)生通過對 rand ()函數(shù)產(chǎn)生數(shù)據(jù)的數(shù)字類型變換從而為浮 點數(shù)創(chuàng)造了可能, /10 可
6、以制造出一位小數(shù), /100 可以制造 出兩位小數(shù),如果想隨機輸出 3-5 之間的小數(shù)只需要將 %n 中 的 n 改為大于10 的數(shù)字,通過小數(shù)點進位的方式來進行。 例如:圖 4 這為小數(shù)隨機數(shù)(跨位數(shù))的生成算法分析:關(guān)于進位,可以看做是大于 1 的小數(shù)和整數(shù)的相 加,通過 rand ()隨機輸出 0-20 的隨機數(shù),除以 10 后,便 成為隨機輸出 0.0-2.0 之間的隨機小數(shù), 加上 3 后成為隨機輸 出 3.0-5.0 之間的隨機數(shù),根據(jù)實驗結(jié)果,這種算法正確。3.3 任意數(shù)的隨機輸出C+中 rand ()只能通過取余函數(shù)來進行模擬,如果要 隨機出特定的隨機數(shù),譬如1、4、5、9 這
7、四個隨機數(shù),我們可以通過 if 來進行篩選。分析:隨機數(shù)只能連續(xù)輸出,如果要輸出特定的數(shù)字只 能依靠if 判斷語句,進行隨機數(shù)的篩選,如果是特定的數(shù)字 就輸出,不是就繼續(xù)隨機輸出下一個數(shù)字。通過圖實驗結(jié)果 證明這種算法正確。3.4 不同比例隨機數(shù)輸出 在實際生活中隨機數(shù)的輸出概率并不均等,那么依靠C+語言中,運用 rand()函數(shù)仍可以進行輸出,例如 0、1、2、3、4、 5、 6 這些數(shù)字,而 0、 1 、 2、 3 這三個數(shù)字比其他 數(shù)字更容易輸出 50%。分析:第一 ?for 循環(huán)按等比例輸出隨機數(shù),第二個 for 循環(huán)通過再次隨機輸出特定相同數(shù)字相同的次數(shù),通過判斷 語句,只打印比例多出來的數(shù)字,從而使特定數(shù)字多出 50% 的概率輸出,通過實驗結(jié)果,得出這種算法是正確的。3.5 任意 0、 1 串的輸出 在實際編程操作中, 很多時候都要運用 0、1 串的輸出分析:運用 for ()循環(huán)進行具體次數(shù)的輸出使字符串的 輸出更加方便。4 小結(jié) 我們在生活中也會遇到很多有關(guān)隨機數(shù)的問題,如隨機抽獎,隨機點名等等。本文介紹了 C+中隨機數(shù)的使用以及
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 內(nèi)審和管理評審培訓(xùn)課件
- 手球指紋課件教學(xué)課件
- 營養(yǎng)門診課件教學(xué)課件
- 第三章第一節(jié)第二課時鐵鹽和亞鐵鹽高一上學(xué)期化學(xué)人教版(2019)必修第一冊
- 護理學(xué)科建設(shè)競聘
- 2.3.2氣體摩爾體積 課件 高一上學(xué)期化學(xué)人教版(2019)必修第一冊
- 新食品安全責任制度
- 沉與浮科學(xué)教案反思
- 化學(xué)反應(yīng)速率說課稿
- 好玩的沙子說課稿
- 2024年大學(xué)生法律知識競賽題庫及答案(共100題)
- 消費合伙人模式協(xié)議書(2篇)
- 廣東省中山市紀中教育集團2024-2025學(xué)年九年級上學(xué)期11月期中聯(lián)考數(shù)學(xué)試題(無答案)
- 安全駕駛培訓(xùn)
- 湖北省武漢市洪山區(qū)2023-2024學(xué)年八年級上學(xué)期期中英語試題(無答案)
- 光伏項目施工總進度計劃表(含三級)
- 醫(yī)院培訓(xùn)課件:《健康教育 知-信-行》
- 《Python分支結(jié)構(gòu)》教學(xué)設(shè)計
- 除數(shù)是兩位數(shù)的除法口算和估算自主學(xué)習(xí)單
- 各種接線端子規(guī)格尺寸檢驗標準
- 全國不明原因肺炎病例監(jiān)測、排查和管理方案
評論
0/150
提交評論