【C語言】產生隨機數


一、

函數原型:int rand()

頭文件:#include <stdlib.h>

返回值為隨機值,參數為空,通過 rand 函數就會產生一個隨機數。

栗子:

#include <stdio.h> #include <stdlib.h>
int main(){ int num; num=rand(); printf("%d",num); return 0; }

    運行該栗子你會得到一個隨機數,但是你再運行一次會發現仍然是你第一次得到的數。那是因為產生隨機數的原理是這樣的:產生隨機數的原理是根據一個值,一般稱為隨機種子,然后把這個種子作為參數,經過一系列的公式運算產生出一個值,這個值就是隨機數。又因為默認的種子是不變的,所以每次根據這個種子算出來的隨機數肯定就是一樣的了。我們通常需要每次運行都得到不一樣的隨機數,那么就要結合下面這個函數才能實現此功能。

二、

函數原型:void srand(unsigned int seed)設置隨機種子,不用此函數的話種子默認為1,當參數seed不同時根據種子得到的隨機數就不同,我可以把時間作為種子參數,這樣就可以實現種子不斷變化,從而得到不同的隨機數,得到當前時刻的函數如下。

 

三、

函數原型:time_t time(time_t *timer)

頭文件:#include <time.h>

將參數timer設置為NULL,其會返回自 Unix 紀元(January 1 1970 00:00:00 GMT)起的當前時間的秒數的函數,主要用來獲取當前的系統時間,注意,函數返回類型time_t是long 型

所以srand()函數結合time()函數就可以得到每次運行都得到不一樣的隨機數了,栗子如下。

#include <stdio.h> #include <stdlib.h> #include <time.h>
int main(){ int num; srand((int)time(NULL)); num=rand(); printf("%d",num); return 0; }

四、

有時我們還需要要求隨機數是在一個范圍內,如實現擲色子程序,需要隨機得到數在1~6范圍內,此時我可以用‘%’來實現。
①假設我們要得到0~b范圍內的數

我們可以將隨機得到的數對b取余那么得到的數肯定是大於等於0小於b的。

②但當范圍為a~b時(a不等於0)

我們可以先將得到的隨機數對(b-a)取余,得到的數范圍為0~(b-a),然后再加a,得到的數就在范圍a~b內了。

 

 整理自http://www.jb51.net/article/83721.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM