天天看點

C++使用随機數

因為平時随機數用的比較少, 總是會忘記如何使用, 是以常常是要用的時候到網上去查找資料, 覺得挺麻煩, 幹脆自己寫一篇.

随機函數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

同理其他