@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++.