1、
函數
函數原型:int rand()spa
頭文件:#include <stdlib.h>.net
返回值爲隨機值,參數爲空,經過 rand 函數就會產生一個隨機數。code
栗子:htm
#include <stdio.h> #include <stdlib.h>
int main(){ int num; num=rand(); printf("%d",num); return 0; }
運行該栗子你會獲得一個隨機數,可是你再運行一次會發現仍然是你第一次獲得的數。那是由於產生隨機數的原理是這樣的:產生隨機數的原理是根據一個值,通常稱爲隨機種子,而後把這個種子做爲參數,通過一系列的公式運算產生出一個值,這個值就是隨機數。又由於默認的種子是不變的,因此每次根據這個種子算出來的隨機數確定就是同樣的了。咱們一般須要每次運行都獲得不同的隨機數,那麼就要結合下面這個函數才能實現此功能。blog
2、原型
函數原型:void srand(unsigned int seed)設置隨機種子,不用此函數的話種子默認爲1,當參數seed不一樣時根據種子獲得的隨機數就不一樣,我能夠把時間做爲種子參數,這樣就能夠實現種子不斷變化,從而獲得不一樣的隨機數,獲得當前時刻的函數以下。io
3、
class
函數原型: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; }
4、
有時咱們還須要要求隨機數是在一個範圍內,如實現擲色子程序,須要隨機獲得數在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