1. 隨機數概述
編寫程序過程中,我們經常需要產生一些隨機數。隨機數在程序中分為兩種:
1. 真隨機數:完全沒有規則,無法預測接下來要產生的數。
2. 偽隨機數:通過一些預先設定好的規則產生不能簡單預測的數。
當然,我們在程序中使用的隨機數主要是偽隨機,一般場景下,偽隨機數能夠滿足我們大部分的場景了。本篇文章給大家介紹下,如何在C語言中產生一個偽隨機數。
偽隨機數在C語言中產生分為兩個步驟:
1. 設置隨機數種子。
2. 獲得隨機數。
設置隨機數種子和獲得隨機數,我們需要使用兩個函數。srand 函數 和 rand 函數。使用這兩個函數需要導入頭文件:#include
![C語言隨機數](http://p2.ttnews.xyz/loading.gif)
2. srand 函數用法
設置隨機數種子時,我們一般會用時間值作為種子。這是因為時間值一直都在變化。我們使用 time 函數獲得當前時間值,使用該函數需要先導入頭文件 #include 。
![C語言隨機數](http://p2.ttnews.xyz/loading.gif)
打印出來的是一串數字,並不是我們常見的時間格式。Time 函數主要用於獲得從 1970 年 1 月 1日0時 0分0秒到現在經歷的秒數。時間一直在變,所以該函數可作為一直在改變的隨機數種子。
所以,srand 函數的一個常用的用法就是:
srand 的要求的參數是 unsigned int,所以需要將 time 函數返回的結果強制轉換成 unsigned int 類型。
3. rand 函數使用
設置好隨機數種子,rand 函數就可以根據該值來產生隨機數了。在 windows 的 vs 2019 平臺上,默認該函數會產生一個 0 到 32767 之間的隨機數。演示代碼如下:
但是實際的場景是,我們希望產生一個指定範圍內的隨機數。此時,我們可以讓隨機產生數進行取餘運算符,折算成指定範圍。例如:我們要產生 1-100之間的隨機數,可進行如下代碼編寫:
1. rand() % 100 會產生一個 0-99之間的數字。
2. rand() % 100 + 1 會產生一個 1-100之間的數字、
4. 隨機數使用案例
我們下面做一個練習,創建一個包含10個元素的數組,使用 for 循環產生 10 個 1-10之間的隨機數存儲到數組中,並打印輸出。
注意:隨機數種子設置一次即可。