Не повторяющиеся случайные числа - 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]);
}

Объяснение кода листинга программы

  1. В цикле for выполняется 10*16 итераций.
  2. В каждой итерации происходит следующее:
    • Переменная i принимает случайное значение от 0 до n-1, где n - количество элементов в массиве m.
    • Функция swap() меняет местами элементы m[i] и m[j%16].
    • Значение j%16 гарантирует, что индекс для обмена не будет превышать размер массива m.
    • Вероятно, цель этого кода - перемешать элементы массива m, чтобы они стали в случайном порядке.

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы