一、
函數原型: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