因為平時随機數用的比較少, 總是會忘記如何使用, 是以常常是要用的時候到網上去查找資料, 覺得挺麻煩, 幹脆自己寫一篇.
随機函數rand(), 包含在cstdlib頭檔案中. 有的部落格文章給出的代碼是沒有這個的, 編譯不通過, 誤導别人.
基本的用法是這樣的:
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int num = rand();
cout << rand() << endl;
}
然而隻是這樣的話, 生成的(僞)随機數不總是随機.
為什麼說是不總是? 運作如下代碼, 發現生成的一系列随機數始終相同
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
for(int i = ; i < ; ++i)
cout << rand() << endl;
}
具體解釋
解決這種問題的方法是使用srand函數
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
srand((unsigned)time(NULL));
for(int i = ; i < ; ++i)
cout << rand() << endl;
}
加個ctime頭檔案. srand函數的種子使用系統時間
另外, 可以使用宏定義自定義一個自由的區間的随機數
如:
//随機範圍為[a,b]
#define random(a, b) rand()%(b-a+1) + a
同理其他