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

C說話/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:

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

如許做的話,每次運轉的成果就都紛歧樣了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved