【C語言】產生隨機數

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

相關文章
相關標籤/搜索