C 隨機函數 `rand()\srand()\randomize()`

說明:
1、這兩個函數都在頭文件是stdlib.h中。
2、rand()函數和srand()函數必須配套使用。

(1) rand()函數:

原型: int rand(void)
功能: 產生從0到RAND_MAX(0x7fff)之間的隨機數。
頭文件: stdlib.h
例:

   #include <stdio.h>
   #include <stdlib.h>

   int main()
   {
       int k;
       k = rand();
       printf("%d\n", k);
       return 0;
   }

編譯運行,發現的確產生隨機數了,但是,每次運行程序產生的隨機數都是一樣的,為什么呢?因為隨機數取在
C語言中采用的是固定序列,所以每次執行所取的是同一個數。那么如何寫一個程序,讓它每次運行時產生的隨機數
都不一樣呢?

(2)srand()函數:

原型: void srand(unsigned seed)
功能: 產生隨機數的起始發生數據,和rand函數配合使用
頭文件:stdlib.h time.h
例:

   #include <stdio.h>
   #include <stdlib.h>
   #include <time.h>
   int main(void)
   {
       int i;
       time_t t;
       srand((unsigned) time(&t));
       printf("Ten random numbers from 0 to 99\n\n");
       for (i=0; i<10; i++)
       printf("%d\n", rand()%100);
       return 0;
   }

這時運行程序,會發現每次產生的隨機數都不一樣。這是因為這里采用了時間作為種子,而時間在每時每刻都不相同,所以就產生了"隨機"的隨機數了。所以,要想產生不同的隨機數,在使用rand之前需要先調用srand。
這樣做相當麻煩,有沒一個更簡單的函數呢?

(3)randomize()函數:

原型: int randomize(void)
功能: 通過time函數來得到一個隨機數
頭文件:stdlib.h time.h
該函數就相當于srand((unsign)(time(NULL))不過應注意的是randomize()的功能要通過time來實現所以在
調用它時頭文件要包含time.h

(4)產生一個X到Y的隨機數:

由于rand產生的隨機數從0到rand_max,而rand_max是一個很大的數,那么如何產生從X~Y的數呢?
只要這樣寫:
k=rand()%(Y-X+1)+X;
這樣可以產生任何范圍內的隨機數。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容