
文章插圖
隨機數(shù)的使用 , 是不少在學C語言過程中進行一些小功能開發(fā)的同學的一個技術問題 , 今天我們?yōu)榇蠹抑v解如何在C語言中使用隨機數(shù) 。通常情況下 , 使用最多的方法的就是使用rand函數(shù)隨機生成偽隨機數(shù)來完成隨機數(shù)的生成工作 。注意這里的偽隨機數(shù)并非是假的! 只不過是計算機按自己的一套理論生成 , 并不是”完全理想”狀態(tài)下的隨機數(shù) , 所以是可以接受的 。
函數(shù)原型為:int rand(void); 需要包含stdlib頭文件 , 它可以生成一個0 ~RAND_MAX之間的數(shù)字 , 其中RAND_MAX是一個宏 , VC6下筆者查看為0x7fff , 建議大家親自上機實驗!
大家可以自行上機測試 , 如發(fā)現(xiàn)新的問題或有其他好玩的 , 歡迎告知我們!我們的QQ群號是496926338群內(nèi)有大量的項目開發(fā)視頻和新手教學視頻
這個時候你可能會遇到下面幾個問題:
Q1:為什么每次生成的數(shù)字都一樣?A1:rand函數(shù)每次生成的數(shù)字與所謂的”種子”有關 , 使用rand函數(shù)前需要使用srand函數(shù)進行種種子(請見后文) 。如果沒有調(diào)用 , 系統(tǒng)會默認給1 , 導致每次的隨機數(shù)都一樣 。
Q2:為什么最大是0x7fff?A1:這可能取決于編譯器環(huán)境 , 筆者這里是VC6 , 在rand的函數(shù)中看到定義的最大值為0x7fff , 如下圖:
Q3:如果我想生成特定范圍內(nèi)的數(shù)字 , 該如何寫呢?A3:多多利用%求余運算符即可 。如:
生成10以內(nèi)的數(shù)字 , 可以參考rand()%10
生成1~10之間的數(shù)字 , 可以參考rand()%10+1
特定的 , 要生成a~b之間的數(shù)字 , 可以參考rand()%(b-a+1)+a
更多時候 , 我們希望每次運行生成的數(shù)字都不相同 , 這個時候需要配合srand函數(shù)來解決這一問題 。關于具體原因 , 大家可以參考rand函數(shù)與srand函數(shù)的實現(xiàn)細節(jié)來加以理解 , 代碼如下:
那么srand函數(shù)如何使用呢 , 先看函數(shù)原型:
void srand(unsigned seed); 只需要在rand函數(shù)使用之前 , 調(diào)用srand函數(shù)傳入一個種子即可 。但事實上傳入一個數(shù) , 往往產(chǎn)生的隨時仍然固定不變 。那么較為聰明的寫法目前看來只有使用系統(tǒng)時間作為種子最為合適 , 所以這里srand的參數(shù)往往傳入time(NULL)參數(shù)作為獲取系統(tǒng)當前時間作為種子 , 來產(chǎn)生不同的結果!
并注意類型一致 , srand((unsigned)time(NULL)); 記得添加time.h的頭文件!
測試代碼如下:
大家可以自行上機測試 , 如發(fā)現(xiàn)新的問題或有其他好玩的 , 歡迎告知我們!
以上關于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關的問題,請您及時就醫(yī)或請專業(yè)人士給予相關指導!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- 教你刪除數(shù)組最后一位 php刪除數(shù)組最后一個元素使用什么方法
- 減肥方法:數(shù)組全身減肥動作幫助夏季瘦身
- ae語言設置方法 ae2018中英文切換工具
- 我愛你 西班牙語:英語派:我愛你,I Love you,用n種語言對你表白到地老天荒!
- 二進制轉換十六進制方法 C語言十進制轉換二進制
- 老漂族現(xiàn)狀:語言不通-融入新生活難-除此之外還面臨什么問題?
- 男人愛不愛你看哪些身體語言就知道
- 條形碼掃描器在線使用 二維碼掃描在線識別
- 今年最火的十大網(wǎng)絡語言是什么?
- 最受歡迎的與眾不同搞笑網(wǎng)名
