c產生隨機數(含時間種子)


有時候我們需要程序產生一個隨機數.

可以用rand()

但是其實這個隨機數是偽隨機數,它是一個周期很長的一個值而已.

所以我們可以加入一個隨機數種子srand(),這個可以取以當前時間為基准的一個值.

 1 #include <stdlib.h> 
 2   #include <stdio.h> 
 3   #include <time.h> 
 4   main() 
 5   { 
 6     int i,k;
 7    srand( (unsigned)time( NULL ) ); 
 8    for( i = 0; i < 10;i++ ) 
 9   { 
10      k=rand()%100+1;   //rand()%100表示取100以內的隨機數,  由於rand產生的隨機數是0到rand_max,而rand_max是一個很大的數,那么要產生一個從X到Y的隨機數,x=rand()%(Y-X+1)+X 
11      printf( " k=%d\n", k ); 
12   } 
13 }

然后可以看一下我這里出的結果

 1 k=18
 2  k=62
 3  k=97
 4  k=28
 5  k=85
 6  k=97
 7  k=99
 8  k=47
 9  k=35
10  k=59

其實如果把srand去掉,可以發現也會產生一些隨機數,只不過每次運行產生的隨機數都是一樣的.

那是因為你不設定種子,每次默認的種子都是1.

但是加上以后,就感覺比較隨機了,每次都是不一樣的.


免責聲明!

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



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