Алгоритм такой:
- Содержит ссылки на кнопки в массиве.
- Выполните равномерное перемешивание массива, например, используя Фишер-Йейтс перемешивание.
- Выберите первые 5 элементов из массива.
Вы можете оптимизировать это, если хотите, прерывая перемешивание после 5 итераций его цикла, потому что первые 5 элементов уже были выбраны к этому моменту. Тем не менее, это, вероятно, не нужно для такого маленького массива.
Существует множество реализаций Фишера-Йейта, хотя имейте в виду, что большая часть их реализована неправильно! Правильные реализации также имеются в большом количестве, например, здесь https://stackoverflow.com/a/20361298/505088
Вы можете сделать хуже, чем использовать библиотеку spring4d для этой задачи.
Что касается кнопок копирования, создайте новые кнопки и скопируйте поверхсвойства, которые вам нужны. Может быть проще представить эту работу как фактический выбор 5 случайных чисел от 1 до 20, а затем создание 5 кнопок с этими цифрами. Опять же, это просто перемешивание чисел.
Если вы хотите поместить 20 элементов в массив, вам нужно убедиться, что массив достаточно большой. Ваш массив может содержать 9 элементов, но вы пытаетесь вставить 20.