2017-12-18 40 views
-2

6桁の数字を生成する関数に問題があります。C++で6桁の数字を生成

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]; 

     } 
    } 
} 

私は999999 + 100000が間違っているのrand()%にpobably知っている:プログラムは番号を生成しますが、彼らは常に1 Six digit numbers

で開始し、問題になる部分をthatsのように思えますしかし私はdifferendの方法を試してみて、どれも働いていませんでした。前もって感謝します!

+1

あなたが唯一 'ランドを(DUEする必要があります)%900000 + 100000' –

+1

を6桁の番号000000です?または、最初の6桁の数字は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

関連する問題