c++如何生成隨機數


使用rand()函數

 頭文件<stdlib.h>

(1)  如果你只要產生隨機數而不需要設定范圍的話,你只要用rand()就可以了:rand()會返回一隨機數值, 范圍在0至RAND_MAX 間。RAND_MAX定義在stdlib.h, 其值為2147483647。

(2)  如果你要隨機生成一個在一定范圍的數,你可以在宏定義中定義一個random(int number)函數,然后在main()里面直接調用random()函數

x = rand()%11; //產生1~10之間的隨機整數

y = rand()%51 - 25; //產生-25 ~ 25之間的隨機整數

z = ((double)rand()/RAND_MAX)%(b-a) + a; //產生區間[a,b]上的隨機數

#include<iostream>
#include<stdlib.h>
 
using namespace std;
 
#define random(x) (rand()%x)
 
void main() {  
     for ( int i = 0; i < 10; i++) {
         cout << random(10) <<endl ;
     }
     system( "pause" );
}

(3)但是上面兩個例子所生成的隨機數都只能是一次性的,如果你第二次運行的時候輸出結果仍和第一次一樣。這與srand()函數有關。srand()用來設置rand()產生隨機數時的隨機數種子。在調用rand()函數產生隨機數前,必須先利用srand()設好隨機數種子(seed), 如果未設隨機數種子, rand()在調用時會自動設隨機數種子為1。上面的兩個例子就是因為沒有設置隨機數種子,每次隨機數種子都自動設成相同值1 ,進而導致rand()所產生的隨機數值都一樣。

srand()函數定義 : void srand (unsigned int seed);

通常可以利用geypid()或time(0)的返回值來當做seed,如果你用time(0)的話,要加入頭文件#include<time.h>

#include<iostream>
#include<stdlib.h>
#include<time.h>
 
using namespace std;
 
#define random(x) (rand()%x)
 
void main() {  
     srand(( int )time(0));
     for ( int i = 0; i < 10; i++) {
         cout << random(10) << " " ; //隨機產生0-9十個數
     }
     cout << endl;
}
 

 

 


免責聲明!

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



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