Не повторяющиеся случайные числа - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Сразу скажу, что я читал выделенную тему на форуме про случайные числа, но так и не понял как делать, не мой уровень пока.. Есть прога, которая выводит на экран случайные числа от 0 до 15 в виде матрицы 4х4. Нужно сделать так, чтобы числа не повторялись. Помогите пожалуйста.
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #define M 4
  5. #define N 4
  6. void main()
  7. {
  8. int A[M][N], i, j;
  9. randomize();
  10. for (i=0;i<M;i++)
  11. {
  12. for (j=0;j<N;j++)
  13. {
  14. A[i][j]=random(16);
  15. printf ("%2d ", A[i][j]);
  16. }
  17. printf ("\n");
  18. }
  19. getch();
  20. }

Решение задачи: «Не повторяющиеся случайные числа»

textual
Листинг программы
  1.  for(j=0; j<10*16; j++) {
  2.   i = rand()%n;
  3.   swap(m[i], m[j%16]);
  4. }

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

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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы