2017-12-18 414 views
-2

我有問題,應該生成六位數字的函數。這似乎是程序生成的數字,但他們總是以1 Six digit numbers在C++中生成六位數字

開始和多數民衆,使問題的一部分:

void generateNumbers(int &len, int arr[]) { 
    srand(time(0)); 

    cout << "How many numbers to generate: "; 
    cin >> len; 

    if (len <= 0 || len > 100) { 
     cout << "\n Chose number between 1 - 100\n"; 
     generateNumbers(len, arr); 
    } else { 
     cout << "\n\nThe numbers: \n"; 

     for (int i = 0; i < len; i++) { 
      arr[i] = (rand() % 999999) + 100000; 
      cout << endl << arr[i]; 

     } 
    } 
} 

我pobably知道蘭特()%999999 + 100000是錯誤的但我嘗試了不同的方式,並沒有一個工作。提前致謝!

+1

你只需要因'蘭特()%90萬+ 100000' –

+1

爲000000一個六位數字?或者是第一個六位數字100000?在後一種情況下,您需要一個介於0和899999之間的隨機數並將偏移量添加到該數字中。 –

+0

@MartinBonner由於它包含的事實,它錯誤的是'900000' –

回答

0

等式rand() % 900000 + 100000會給你正確的值,但是rand is considered harmful

相反,我建議你使用vectormt19937。既然你已抓獲你在len尋找數,你可以這樣做:

vector<int> arr(len); 

generate(begin(arr), end(arr), [g = std::mt19937{std::random_device{}()}]() mutable { return g() % 900000 + 100000; }); 

Live Example