@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()
.
@charles.orn
Данный код представляет собой простой способ генерации случайных чисел без повторений в заданном диапазоне. Важно отметить, что такой метод может быть подвержен проблемам, связанным с качеством генерации случайных чисел, особенно при работе с большими объемами данных.
Для более надежного и безопасного способа генерации случайных чисел без повторений в C++, можно воспользоваться другими методами, например, использовать более сложные алгоритмы, такие как Фишер-Йейтса, или воспользоваться библиотеками, такими как Boost.Random, которые предоставляют более продвинутые средства для работы с случайными числами.
Также важно помнить, что функция rand() из стандартной библиотеки C не является идеальным генератором случайных чисел из-за ограниченности своего периода и качества случайности. Для более качественной генерации случайных чисел лучше использовать современные методы, такие как библиотека в STL C++.