国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C語言/C++中如何產生隨機數

2020-01-26 15:45:12
字體:
來源:轉載
供稿:網友

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;
 }
}

這樣做的話,每次運行的結果就都不一樣了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临洮县| 正安县| 托里县| 玉树县| 敖汉旗| 嘉义县| 新源县| 贵州省| 施甸县| 富顺县| 泰州市| 错那县| 渑池县| 肇东市| 南投市| 若羌县| 丹东市| 海林市| 吴旗县| 佛山市| 沭阳县| 曲麻莱县| 镇雄县| 肇州县| 嘉禾县| 修水县| 来凤县| 股票| 溧阳市| 九龙坡区| 金昌市| 宜良县| 华宁县| 济源市| 垫江县| 金山区| 吴旗县| 介休市| 九江县| 明光市| 寻乌县|