1. 程式人生 > >rand()每次產生的隨機數都一樣

rand()每次產生的隨機數都一樣

寫了個程式,每次產生的隨機數都是一樣的。

在呼叫之前已經初始化了隨機數種子,用的是當前時間,可是還是得到一樣的數。

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++){cout&lt;&lt;rand()&lt;&lt;endl;}