2016-02-18 30 views
0

這裏是我的代碼蘭特()是發電機,即使我叫函數srand相同數量(時間(NULL))

#include <iostream> //cout, cin 
#include <time.h> // time 
#include <stdlib.h> // srand(), rand() 
using std::cout; //cout 

int main() 
{ 
    srand(time(NULL)); //Initializes a random seed 
    int rand_number = rand() % 1 + 100; //Picks a random number between 1 and 100 

    cout << rand_number << std::endl; 
} 

出於某種原因,它不斷給我100時,我產生隨機數。雖然我不相信它應該是因爲我調用了srand(time(NULL))來初始化一個種子。

+1

'rand()%1'將始終爲0。 – Galik

回答

3

如評論中所述,rand() % 1是無意義的。除以1的任何其餘部分都是0.然後,您添加100。

相反,(rand() % 100) + 1會給你一個[1,100]範圍內的隨機數。

<random>中的設施要好得多,學習它們是個好主意。

std::mt19937 mt((std::random_device()())); //create engine 
std::uniform_int_distribution<int> dist(1, 100); //define distribution 

dist(mt); //better random number in range [1, 100] 
相關問題