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:
#include<iostream>
using namespace std;
int main()
{
for(int i=0;i<10;i++)
{
cout<<rand()<<endl;
}
}
應用rand()函數獲得必定規模內的一個隨機數
假如想要獲得在必定規模內的數的話,直接做響應的除法取余便可。
例子2.1:
#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:
#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:
#include <iostream>
#include <ctime>
using namespace std;
void main()
{
int a;
a=time(0);//time(0)前往的是體系的時光(從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++)
{
//發生10之內的整數
cout<<rand()%10<<endl;
}
}
如許做的話,每次運轉的成果就都紛歧樣了。