更新時間:2020-04-21 來源:黑馬程序員 瀏覽量:
編寫程序過程中,我們經(jīng)常需要產(chǎn)生一些隨機(jī)數(shù)。隨機(jī)數(shù)在程序中分為兩種:
1. 真隨機(jī)數(shù):完全沒有規(guī)則,無法預(yù)測接下來要產(chǎn)生的數(shù)。
2. 偽隨機(jī)數(shù):通過一些預(yù)先設(shè)定好的規(guī)則產(chǎn)生不能簡單預(yù)測的數(shù)。
當(dāng)然,我們在程序中使用的隨機(jī)數(shù)主要是偽隨機(jī),一般場景下,偽隨機(jī)數(shù)能夠滿足我們大部分的場景了。本篇文章給大家介紹下,如何在C語言中產(chǎn)生一個偽隨機(jī)數(shù)。推薦了解黑馬程序員C++培訓(xùn)課程。
偽隨機(jī)數(shù)在C語言中產(chǎn)生分為兩個步驟:
1. 設(shè)置隨機(jī)數(shù)種子。
2. 獲得隨機(jī)數(shù)。
設(shè)置隨機(jī)數(shù)種子和獲得隨機(jī)數(shù),我們需要使用兩個函數(shù)。srand 函數(shù) 和 rand 函數(shù)。使用這兩個函數(shù)需要導(dǎo)入頭文件:#include
srand 函數(shù)用法
設(shè)置隨機(jī)數(shù)種子時,我們一般會用時間值作為種子。這是因?yàn)闀r間值一直都在變化。我們使用 time 函數(shù)獲得當(dāng)前時間值,使用該函數(shù)需要先導(dǎo)入頭文件
#include <time.h>。
數(shù)1.jpg)
打印出來的是一串?dāng)?shù)字,并不是我們常見的時間格式。Time 函數(shù)主要用于獲得從 1970 年 1 月 1日0時
0分0秒到現(xiàn)在經(jīng)歷的秒數(shù)。時間一直在變,所以該函數(shù)可作為一直在改變的隨機(jī)數(shù)種子。
所以,srand 函數(shù)的一個常用的用法就是:
數(shù)2.jpg)
srand 的要求的參數(shù)是 unsigned int,所以需要將 time 函數(shù)返回的結(jié)果強(qiáng)制轉(zhuǎn)換成 unsigned int 類型。
rand 函數(shù)使用
設(shè)置好隨機(jī)數(shù)種子,rand 函數(shù)就可以根據(jù)該值來產(chǎn)生隨機(jī)數(shù)了。在 windows 的 vs 2019 平臺上,默認(rèn)該函數(shù)會產(chǎn)生一個 0 到 32767
之間的隨機(jī)數(shù)。演示代碼如下:
數(shù)3.jpg)
但是實(shí)際的場景是,我們希望產(chǎn)生一個指定范圍內(nèi)的隨機(jī)數(shù)。此時,我們可以讓隨機(jī)產(chǎn)生數(shù)進(jìn)行取余運(yùn)算符,折算成指定范圍。例如:我們要產(chǎn)生
1-100之間的隨機(jī)數(shù),可進(jìn)行如下代碼編寫:
數(shù)4.jpg)
1. rand() % 100 會產(chǎn)生一個 0-99之間的數(shù)字。
2. rand() % 100 + 1 會產(chǎn)生一個 1-100之間的數(shù)字
隨機(jī)數(shù)使用案例
我們下面做一個練習(xí),創(chuàng)建一個包含10個元素的數(shù)組,使用 for 循環(huán)產(chǎn)生 10 個 1-10之間的隨機(jī)數(shù)存儲到數(shù)組中,并打印輸出。
數(shù)5.jpg)
注意:隨機(jī)數(shù)種子設(shè)置一次即可。
猜你喜歡:
1024首播|39歲程序員逆襲記:不被年齡定義,AI浪潮里再迎春天
2025-10-241024程序員節(jié)丨10年同行,致敬用代碼改變世界的你
2025-10-24【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營】深圳跨境電商運(yùn)營畢業(yè)22個工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個工作日,班級93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19