用C ++生成六位数字

时间:2017-12-18 13:40:25

标签: c++ function loops random numbers

我的功能有问题,应生成六位数字。似乎程序生成数字,但它们始终以1开头。 Six digit numbers

这就是产生问题的部分:

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

        }
    }
}

我知道rand()%999999 + 100000可能是错误的,但我尝试了不同的方式,但没有一个工作。提前谢谢!

1 个答案:

答案 0 :(得分: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

相关问题