Что делает функция:
1 Принимает на вход:
- ИсходныйМассив — исходный массив элементов
- КолЭлементов — количество элементов, которые нужно выбрать
2 Проверяет корректность запроса:
- Если запрошенное количество (КолЭлементов) больше длины массива — выбрасывает исключение
3 Перемешивает исходный массив:
- Вызывает функцию МассивПеремешать() (вероятно, реализует алгоритм случайного перемешивания, например, тасование Фишера-Йетса)
4 Забирает первые N элементов:
- Из перемешанного массива берёт первые КолЭлементов элементов
- Добавляет их в новый массив
5 Возвращает массив со случайными уникальными элементами
Ключевая особенность:
В отличие от простого случайного выбора с повторениями, эта функция гарантирует уникальность выбранных элементов — каждый элемент исходного массива может быть выбран не более одного раза.
Пример использования:
ИсходныйМассив = Новый Массив;
ИсходныйМассив.Добавить("Анна");
ИсходныйМассив.Добавить("Борис");
ИсходныйМассив.Добавить("Виктор");
ИсходныйМассив.Добавить("Галина");
ИсходныйМассив.Добавить("Дмитрий");
// Выбрать 3 случайных уникальных имени
Результат = МассивВыбратьНесколько(ИсходныйМассив, 3);
// Может вернуть, например: ["Галина", "Борис", "Дмитрий"]
// Все элементы уникальны и не повторяются
Основной код:
Функция МассивВыбратьНесколько(ИсходныйМассив, КолЭлементов) Экспорт
ДлинаМассива = ИсходныйМассив.Количество();
Если КолЭлементов > ДлинаМассива Тогда
ВызватьИсключение("Желаемое количество элементов больше кол-ва элементов в массиве.");
КонецЕсли;
МассивСлучайных = МассивПеремешать(ИсходныйМассив);
ИтоговыйМассив = Новый Массив;
Для Индекс = 0 По КолЭлементов - 1 Цикл
ИтоговыйМассив.Добавить(МассивСлучайных[Индекс]);
КонецЦикла;
Возврат ИтоговыйМассив;
КонецФункции