Как уже указывалось в комментариях, лучше всего забыть о rand()
и использовать вместо этого средства, предоставляемые стандартной библиотекой в <random>
. Например:
std::vector<int> makeRandomBunch(int min, int max, std::size_t min_elements, std::size_t max_elements)
{
std::mt19937 generator(42);
std::uniform_int_distribution<std::size_t> size_distribution(min_elements, max_elements);
std::size_t num_elements = size_distribution(generator);
std::vector<int> data;
data.reserve(num_elements);
std::uniform_int_distribution<int> element_distribution(min, max);
std::generate_n(std::back_inserter(data), num_elements, [&](){ return element_distribution(generator); });
return data;
}
Здесь мы используем генератор псевдослучайных чисел mt19937
(не пугайтесь этого имени, он просто назван в честь алгоритма, который он использует ), засеянного с помощью значение 42 как наш источник случайности. std::uniform_int_distribution
может использоваться для преобразования случайности, обеспечиваемой генератором случайных чисел, в случайные целые числа, выбранные из заданного диапазона. Мы используем uniform_int_distribution
, чтобы случайным образом выбрать размер от elements_min
до elements_max
для нашего вектора и зарезервировать такое количество места в нашем векторе. Мы используем другой uniform_int_distribution
, из которого мы выберем наши int
элементы (в диапазоне от min
до max
). Наконец, мы используем std::generate_n
в сочетании с back_inserter
, чтобы заполнить наш вектор элементами и вернуть вектор & hellip;
живой пример здесь