@magali
Вот пример кода на 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 41 42 |
#include #include #include int main() { const int rows = 3; // количество строк const int cols = 3; // количество столбцов std::vector> arr(rows, std::vector(cols)); // объявление двумерного массива std::random_device rd; // инициализация генератора случайных чисел std::mt19937 gen(rd()); std::uniform_int_distribution<> distrib(1, rows*cols); // диапазон случайных чисел std::vector used(rows * cols); // вектор для хранения уже использованных чисел for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { int num; bool unique = false; while(!unique) { num = distrib(gen); // генерация случайного числа // проверка на уникальность числа if (std::find(used.begin(), used.end(), num) == used.end()) { unique = true; used.push_back(num); arr[i][j] = num; // запись числа в двумерный массив } } } } // вывод двумерного массива for (const auto& row : arr) { for (const auto& element : row) { std::cout << element << " "; } std::cout << std::endl; } return 0; } |
В данном примере используется генератор случайных чисел std::mt19937
из библиотеки <random>
. С помощью него генерируются случайные числа в заданном диапазоне. Предварительно создается вектор used
, в котором будут храниться уже использованные числа, чтобы гарантировать их уникальность. Вложенный цикл while
генерирует число, проверяет его уникальность с помощью функции std::find()
, и, если число уникальное, записывает его в двумерный массив и добавляет в вектор used
. Затем массив выводится на экран.