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

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

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

У меня есть например 50 кнопок как сделать так чтоб каждая кнопка имела свой номер. но он должен каждый раз меняться и не должен повторяться! А числа которые нужно отгадать нужно будет вписать в специальную ячейку. 10 попыток и 10 ячеек

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

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h> 
#include <time.h> 
 
#define SIZE            100
 
 
int main()
{
    int arr[SIZE];
    int i, j, t;
    /* создаем массив последовательных чисел от 1 до SIZE */    
    for(i = 0; i < SIZE; i++){
        arr[i] = i+1;
    }
 
    /* перемешиваем его */
    srand ((unsigned int) time(NULL) ); 
    for(i = SIZE-1; i > 0; i--){
        j = rand() % i;
        t = arr[j];
        arr[j] = arr[i];
        arr[i] = t;
    }
 
    /* на выходе имеем массив перемешанных неповторяющихся чисел от 1 до SIZE */
    for(i = 0; i < SIZE; i++){
        printf("%d\n", arr[i]);
    }
 
 
    return 0;
}

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

  1. Подключение необходимых библиотек для работы со случайными числами и временем
  2. Объявление массива с размером 100 элементов
  3. Создание трех переменных для работы с циклами
  4. Заполнение массива последовательными числами от 1 до 100
  5. Перемешивание массива с помощью алгоритма Fisher-Yates
  6. Вывод на экран полученного массива случайных неповторяющихся чисел от 1 до 100

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

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