Не повторяющиеся случайные числа - C (СИ)
Формулировка задачи:
Сразу скажу, что я читал выделенную тему на форуме про случайные числа, но так и не понял как делать, не мой уровень пока..
Есть прога, которая выводит на экран случайные числа от 0 до 15 в виде матрицы 4х4. Нужно сделать так, чтобы числа не повторялись. Помогите пожалуйста.
Листинг программы
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- #define M 4
- #define N 4
- void main()
- {
- int A[M][N], i, j;
- randomize();
- for (i=0;i<M;i++)
- {
- for (j=0;j<N;j++)
- {
- A[i][j]=random(16);
- printf ("%2d ", A[i][j]);
- }
- printf ("\n");
- }
- getch();
- }
Решение задачи: «Не повторяющиеся случайные числа»
textual
Листинг программы
- for(j=0; j<10*16; j++) {
- i = rand()%n;
- swap(m[i], m[j%16]);
- }
Объяснение кода листинга программы
- В цикле for выполняется 10*16 итераций.
- В каждой итерации происходит следующее:
- Переменная
i
принимает случайное значение от 0 до n-1, где n - количество элементов в массиве m. - Функция swap() меняет местами элементы m[i] и m[j%16].
- Значение
j%16
гарантирует, что индекс для обмена не будет превышать размер массива m. - Вероятно, цель этого кода - перемешать элементы массива m, чтобы они стали в случайном порядке.
- Переменная
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д