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:
代碼如下:
#include
using namespace std;
int main()
{
for(int i=0;i<10;i++)
{
cout<<rand()<<endl;< p="">
}
}
結果:
使用rand()函數獲取一定範圍內的一個隨機數
如果想要獲取在一定範圍內的數的話,直接做相應的除法取餘即可。
例子2.1:
代碼如下:
#include
using namespace std;
int main()
{
for(int i=0;i<10;i++)
{
//產生10以內的.整數
cout<<rand()%10<<endl;< p="">
}
}
結果:
我們上面獲取的都是隨機的整數,那麼如何獲取小數呢?例如:我們可以先獲得10001以內的整數(0~10000),然後再用這個整數除以10000得到小數點後兩位的小數。
例子2.2:
代碼如下:
#include
using namespace std;
int main()
{
for(int i=0;i<10;i++)
{
cout<<(rand()%10001)/10000.0<<endl;< p="">
}
}
注意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
time(0)或者time(NULL)返回的是系統的時間(從1970.1.1午夜算起),單位:秒
例子3.1:
代碼如下:
#include
#include
using namespace std;
void main()
{
int a;
a=time(0);//time(0)返回的是系統的時間(從1970.1.1午夜算起),單位:秒
cout<<a<<endl;< p="">
}
例子3.2:
代碼如下:
#include
#include
using namespace std;
int main()
{
srand(time(0));
for(int i=0;i<10;i++)
{
//產生10以內的整數
cout<<rand()%10<<endl;< p="">
}
}
這樣做的話,每次運行的結果就都不一樣了。
-
2017計算機二級C語言精選習題
多做題有助於同學們及時檢測自己的學習情況。希望提供的2017計算機二級C語言精選習題,能夠幫助大家鞏固所學知識,為今後的學習打好基礎!(1)OSI模型的'物理層負責下列哪一種功能?A)格式化報文B)為數據選擇通過網絡的路由C)定義連接到介質的特徵D)提供遠程文件訪...
-
C語言自增(++)和自減(--)
C語言源自KenThompson發明的B語言,那麼大家知道C語言自增(++)和自減(--)是什麼呢?下面一起來看看!一個整數自身加一可以這樣寫:a+=1;它等價於a=a+1;。但是在C語言中還有一種更簡單的寫法,就是a++;或者++a;。這種寫法叫做自加或自增;意思很明確,就是自身加一。相應...
-
2017年計算機二級C語言對C語言的深入探討知識點
引導語:它的應用範圍廣泛,具備很強的數據處理能力。以下是本站小編分享給大家的2017年計算機二級C語言對C語言的深入探討知識點,歡迎閲讀!【考點1】編譯預處理凡以#開頭的這一行,都是編譯預處理命令行,編譯預處理不加分號,不佔運行時間。宏替換僅是簡單的文本替換,如#...
-
c語言—文件的創建與建立
今天要介紹的是有關文件的創建與讀取的語法,事實上,c語言中對於這方面的`已經有相當經典且應用相當廣泛的語法了,但是我今天想講一講關於c++中的相關語法,以下僅供參考!以下是代碼:首先是文件的創建:#include#include#includeusingnamespacestd;intmain(){ofstreamout...