10 случайных, неповторяющихся чисел

Денис Иванов

Новичок
Примера кода нет под рукой. Пишу я на языке 1С, может переведёте на свой язык. Сделать можно так:
//Цель в том,чтобы выпало 2 шара с разными номерами
//в диапазоне от 1 до 4
//Создаем массив шаров от 1 до 4
ЧислоШаровВыбора=4;
ЧислоШаровВыпадения=2;
МассивШаров=Новый Массив;
КоличШаров=0;
Пока КоличШаров<ЧислоШаровВыбора Цикл
КоличШаров=КоличШаров+1;
МассивШаров.Добавить(КоличШаров);
КонецЦикла;
//Заполняем по очереди 2 шара случайными числами от 1 до 4
МассивВыпавшихШаров=Новый Массив;
ГСЧ=Новый ГенераторСлучайныхЧисел(0);
Для СчШаров=1 по ЧислоШаровВыпадения Цикл
//Выбираем сначала из 4 шаров, затем из 3
ВыбМас=ГСЧ.СлучайноеЧисло(1,ЧислоШаровВыбора-СчШаров+1);
ЗначМас=МассивШаров.Получить(ВыбМас-1);
//Добавляем значение выпавшего шара в массив выпавших шаров
МассивВыпавшихШаров.Добавить(ЗначМас);
//Удаляем выпавший шар из массива шаров по индексу
МассивШаров.Удалить(ВыбМас-1);
КонецЦикла;
//Заполняем реквизиты Шар1 и Шар2
Шар1=МассивВыпавшихШаров.Получить(0);
Шар2=МассивВыпавшихШаров.Получить(1);
//Очищаем массивы шаров и выпавших шаров
МассивШаров.Очистить();
МассивВыпавшихШаров.Очистить();

Оперируя изначально переменными ЧислоШаровВыбора, ЧислоШаровВыпадения, Вы получаете тот результат, который Вам нужен. Ну а если у Вас 10 чисел, то тогда соответственно вы и получать будете их значения по индексу от 0 до 9.

Шар1=МассивВыпавшихШаров.Получить(0);
Шар2=МассивВыпавшихШаров.Получить(1);
Шар3=МассивВыпавшихШаров.Получить(2);
..................................................
Шар10=МассивВыпавшихШаров.Получить(9);
 
Сверху