c語言中rand函數的使用


rand函數是包含在stdlib.h頭文件里的一個產生隨機數的函數,使用方法是rand()%(n-m+1)+m,這個式子表示產生[m,n]范圍內的隨機數。

因為,對於任意數,0<= rand()%(n-m+1)<= n-m,

        ----->,0+m<= rand()%(n-  m+ 1)+ m<= (n- m)+ m。

就比如你要生成[0,69]范圍內的隨機數,就要寫成rand()%70 => rand%(69+ 1)+ 0,這里的69就相當於 rand()%((69- 0+ 1+ 0)。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main()
{
   int i, n;
   
   n = 5;
   
   /* 初始化隨機數發生器 */
    srand(time(NULL));   //隨機種子,獲得不同的隨機數
 
   /* 輸出 0 到 69 之間的 5 個隨機數 */
   for( i = 0 ; i < n ; i++ ) {
      printf("%d\n", rand() % 70);
   }
   
  return(0);
}

注意這里的srand()函數是隨機數發生器,void srand(unsigned int seed):返回值為空, 就是設置隨機種子的,當我們不設置隨機種子的時候,默認設置的種子為 1,也就是srand(1)。

使用rand()時,如果不設定隨機數序列標簽則只會得到重復的隨機數序列,其叫做偽隨機數,seed的作用:srand函數的作用是根據參數seed,設置一個隨機起始點,而rand函數根據這個起始點發生隨機數序列。

如果我們想要程序每次執行生成的隨機數都不一樣就需要使種子的值一直在變化。這里我們使用time.h里的time函數, timer=NULL時得到當前日歷時間(從1970-01-01 00:00:00到現在的秒數)。以此來得到不同的種子。

 


免責聲明!

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



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