C語言隨機數

C語言先通過srand()函數產生隨機數種子,然後調用rand()來生成一個隨機數,因爲C語言產生的隨機數時僞隨機數,並不是真正意義上的隨機數,使用的是固定的算法來得到這些隨機數,所以如果種子seek相同,每次就會產生同一批隨機數。

 問題2: 我按照上述方法並不能產生隨機數,僅產生公差爲3或4的等差數列: 
    #include <stdlib.h> 
    #include <iostream.h> 
    #include <conio.h> 
    #include <time.h> 
    void main() 
    { 
     for(int i=0;i<100000;i++) 
     { 
     srand( (unsigned)time( NULL ) ); 
     cout<<rand()<<endl; 
     } 
    } 
專家解答:
   你的程序是有問題的,你每產生一個隨機數之前,都調用一次srand,而由於計算機運行很快,所以你每次用time得到的時間都是一樣的(time的時間精度較低,只有55ms)。這樣相當於使用同一個種子產生隨機序列,所以產生的隨機數總是相同的。你應該把srand放在循環外: 
     srand( (unsigned)time( NULL ) ); 
     for(int i=0;i<100000;i++) 
     { 
     //相關語句 
     }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章