C ++ Генерация случайного вектора - PullRequest
0 голосов
/ 11 июня 2018

Я только начинаю, пытаюсь научиться программировать.Итак, я сейчас программирую на C ++, и я попытался создать функцию, которая будет генерировать вектор случайных целых чисел на основе параметров.Итак, моя функция до сих пор выглядит так:

std::vector<int> GenerateRandomVector(int NumberCount,int minimum, int maximum) {
    std::vector<int> vecRandomValues;
    int i = 0, randValue = 0;
    srand(time(NULL));
    while (i < NumberCount) {
        randValue = rand() % maximum + minimum;
        vecRandomValues.push_back(randValue);
        i++;
    }
    return vecRandomValues;
}

Итак, моя проблема в том, что она не учитывает минимальное и максимальное значение, которое я ей даю, а также большую часть времени - 40% сгенерированных чисел0. Я не могу понять, что я сделал здесь неправильно, и я не имею ни малейшего представления о том, как это исправить.Я использую Clion на Windows 10.

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Ваш расчет для диапазона неверен.

randValue = rand() % (maximum - minimum + 1) + minimum;
0 голосов
/ 11 июня 2018

Чтобы расширить комментарий @Some-программиста, чувак:

std::vector<int> GenerateRandomVector(int NumberCount,int minimum, int maximum) {
    std::random_device rd; 
    std::mt19937 gen(rd()); // these can be global and/or static, depending on how you use random elsewhere

    std::vector<int> values(NumberCount); 
    std::uniform_int_distribution<> dis(minimum, maximum);
    std::generate(values.begin(), values.end(), [&](){ return dis(gen); });
    return values;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...