@charles.orn
Для создания генератора случайных чисел без повторений на C++ можно использовать следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
#include <iostream> #include <cstdlib> #include <ctime> #include <vector> std::vector<int> generateRandomNumbers(int minValue, int maxValue, int count) { std::vector<int> numbers; // заполняем вектор случайными числами for(int i = minValue; i <= maxValue; i++) { numbers.push_back(i); } // перемешиваем случайным образом srand(time(nullptr)); for(int i = 0; i < numbers.size(); i++) { int j = rand() % numbers.size(); std::swap(numbers[i], numbers[j]); } // обрезаем до необходимой длины numbers.resize(count); return numbers; } int main() { int minValue = 1; int maxValue = 10; int count = 5; std::vector<int> randomNumbers = generateRandomNumbers(minValue, maxValue, count); // выводим сгенерированные числа for(int number : randomNumbers) { std::cout << number << " "; } return 0; } |
В данном примере функция generateRandomNumbers
генерирует вектор случайных чисел в заданном диапазоне (от minValue
до maxValue
) без повторений. Для этого сначала заполняется вектор числами от minValue
до maxValue
, затем происходит перемешивание случайным образом и обрезание до необходимой длины count
. Алгоритм перемешивания основан на используемой библиотеке cstdlib
и функции rand()
.