程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> C語言/C++中怎樣產生隨機數

C語言/C++中怎樣產生隨機數

編輯:關於C
C語言/C++怎樣產生隨機數:這裡要用到的是rand()函數, srand()函數,和time()函數。 需要說明的是,iostream頭文件中就有srand函數的定義,不需要再額外引入stdlib.h;而使用time()函數需要引入ctime頭文件。   使用rand()函數獲取一個隨機數 如果你只要產生隨機數而不需要設定范圍的話,你只要用rand()就可以了:rand()會返回一隨機數值, 范圍在0至RAND_MAX 間。RAND_MAX定義在stdlib.h, 其值為2147483647。 例子1.1: [cpp  #include<iostream>   using namespace std;   int main()   {       for(int i=0;i<10;i++)       {           cout<<rand()<<endl;       }   }         使用rand()函數獲取一定范圍內的一個隨機數 如果想要獲取在一定范圍內的數的話,直接做相應的除法取余即可。 例子2.1: [cpp]   #include<iostream>   using namespace std;   int main()   {       for(int i=0;i<10;i++)       {           //產生10以內的整數            cout<<rand()%10<<endl;       }   }       我們上面獲取的都是隨機的整數,那麼如何獲取小數呢?例如:我們可以先獲得10001以內的整數(0~10000),然後再用這個整數除以10000得到小數點後兩位的小數。 例子2.2: [cpp]   #include<iostream>   using namespace std;   int main()   {       for(int i=0;i<10;i++)       {           cout<<(rand()%10001)/10000.0<<endl;       }   }   注意10000.0後面的有個小數點,表示結果為浮點數。   使用rand函數和time函數 我們上面已經可以獲取隨機數了,為什麼還需要使用time函數呢?我們通過多次運行發現,該程序雖然生成了10個隨機數,但是這個10個隨機數是固定的,也就是說並不隨著時間的變化而變化。 這與srand()函數有關。srand()用來設置rand()產生隨機數時的隨機數種子。在調用rand()函數產生隨機數前,必須先利用srand()設好隨機數種子(seed), 如果未設隨機數種子, rand()在調用時會自動設隨機數種子為1。 上面的例子就是因為沒有設置隨機數種子,每次隨機數種子都自動設成相同值1 ,進而導致rand()所產生的隨機數值都一樣。 srand()函數定義 : void srand (unsigned int seed); 通常可以利用geypid()或time(0)的返回值來當做seed 如果你用time(0)的話,要加入頭文件#include<ctime>   time(0)或者time(NULL)返回的是系統的時間(從1970.1.1午夜算起),單位:秒 例子3.1: [cpp]   #include <iostream>   #include <ctime>   using namespace std;      void main()   {       int a;       a=time(0);//time(0)返回的是系統的時間(從1970.1.1午夜算起),單位:秒       cout<<a<<endl;   }       例子3.2: [cpp]  #include<iostream>   #include<ctime>   using namespace std;   int main()   {       srand(time(0));        for(int i=0;i<10;i++)       {           //產生10以內的整數            cout<<rand()%10<<endl;       }   }     這樣做的話,每次運行的結果就都不一樣了。  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved