Массив случайных неповторяющихся чисел - 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;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы со случайными числами и временем
- Объявление массива с размером 100 элементов
- Создание трех переменных для работы с циклами
- Заполнение массива последовательными числами от 1 до 100
- Перемешивание массива с помощью алгоритма
Fisher-Yates - Вывод на экран полученного массива случайных неповторяющихся чисел от 1 до 100