Не повторяющиеся случайные числа - 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, чтобы они стали в случайном порядке.
- Переменная
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д