- C語言/C++中如何產(chǎn)生隨機數(shù) 推薦度:
- 相關(guān)推薦
在C語言/C++中如何產(chǎn)生隨機數(shù)
C語言功能非常強大、應用廣泛,一旦掌握了后,再自學其他語言就顯得輕而易舉了。在C語言/C++中如何產(chǎn)生隨機數(shù)?下面百分網(wǎng)小編帶大家一起來看看詳細內(nèi)容,希望對大家有所幫助!想了解更多相關(guān)信息請持續(xù)關(guān)注我們應屆畢業(yè)生考試網(wǎng)!
C語言/C++怎樣產(chǎn)生隨機數(shù):這里要用到的是rand()函數(shù), srand()函數(shù),和time()函數(shù)。
需要說明的是,iostream頭文件中就有srand函數(shù)的定義,不需要再額外引入stdlib.h;而使用time()函數(shù)需要引入ctime頭文件。
使用rand()函數(shù)獲取一個隨機數(shù)
如果你只要產(chǎn)生隨機數(shù)而不需要設定范圍的話,你只要用rand()就可以了:rand()會返回一隨機數(shù)值, 范圍在0至RAND_MAX 間。RAND_MAX定義在stdlib.h, 其值為2147483647。
例子1.1:
復制代碼 代碼如下:
#include<iostream>
using namespace std;
int main()
{
for(int i=0;i<10;i++)
{
cout<<rand()<<endl;
}
}
結(jié)果:
使用rand()函數(shù)獲取一定范圍內(nèi)的一個隨機數(shù)
如果想要獲取在一定范圍內(nèi)的數(shù)的話,直接做相應的除法取余即可。
例子2.1:
復制代碼 代碼如下:
#include<iostream>
using namespace std;
int main()
{
for(int i=0;i<10;i++)
{
//產(chǎn)生10以內(nèi)的整數(shù)
cout<<rand()%10<<endl;
}
}
結(jié)果:
我們上面獲取的都是隨機的整數(shù),那么如何獲取小數(shù)呢?例如:我們可以先獲得10001以內(nèi)的整數(shù)(0~10000),然后再用這個整數(shù)除以10000得到小數(shù)點后兩位的小數(shù)。
例子2.2:
復制代碼 代碼如下:
#include<iostream>
using namespace std;
int main()
{
for(int i=0;i<10;i++)
{
cout<<(rand()%10001)/10000.0<<endl;
}
}
注意10000.0后面的有個小數(shù)點,表示結(jié)果為浮點數(shù)。
結(jié)果:
使用rand函數(shù)和time函數(shù)
我們上面已經(jīng)可以獲取隨機數(shù)了,為什么還需要使用time函數(shù)呢?我們通過多次運行發(fā)現(xiàn),該程序雖然生成了10個隨機數(shù),但是這個10個隨機數(shù)是固定的,也就是說并不隨著時間的變化而變化。
這與srand()函數(shù)有關(guān)。srand()用來設置rand()產(chǎn)生隨機數(shù)時的隨機數(shù)種子。在調(diào)用rand()函數(shù)產(chǎn)生隨機數(shù)前,必須先利用srand()設好隨機數(shù)種子(seed), 如果未設隨機數(shù)種子, rand()在調(diào)用時會自動設隨機數(shù)種子為1。
上面的例子就是因為沒有設置隨機數(shù)種子,每次隨機數(shù)種子都自動設成相同值1 ,進而導致rand()所產(chǎn)生的隨機數(shù)值都一樣。
srand()函數(shù)定義 : void srand (unsigned int seed);
通?梢岳胓eypid()或time(0)的返回值來當做seed
如果你用time(0)的話,要加入頭文件#include<ctime>
time(0)或者time(NULL)返回的是系統(tǒng)的時間(從1970.1.1午夜算起),單位:秒
例子3.1:
復制代碼 代碼如下:
#include <iostream>
#include <ctime>
using namespace std;
void main()
{
int a;
a=time(0);//time(0)返回的是系統(tǒng)的時間(從1970.1.1午夜算起),單位:秒
cout<<a<<endl;
}
例子3.2:
復制代碼 代碼如下:
#include<iostream>
#include<ctime>
using namespace std;
int main()
{
srand(time(0));
for(int i=0;i<10;i++)
{
//產(chǎn)生10以內(nèi)的整數(shù)
cout<<rand()%10<<endl;
}
}
這樣做的話,每次運行的結(jié)果就都不一樣了。
【在C語言/C++中如何產(chǎn)生隨機數(shù)】相關(guān)文章:
C語言/C++中如何產(chǎn)生隨機數(shù)09-16
C/C++產(chǎn)生指定范圍和不定范圍隨機數(shù)的實例代碼10-09
C語言中如何使用隨機數(shù)09-21
Java程序如何調(diào)用C/C++語言函數(shù)10-29
C語言和C++的分別06-18