Генератор случайных чисел (ГСЧ) вашей среды предоставит вам случайные числа, которые равномерно распределены в определенном диапазоне. Этот тип распределения часто необходим, например, если ваше подмножество имитирует лотерейные рисунки, но важно упомянуть этот факт, если вы моделируете, скажем, возраст людей, найденных на основании средней школы ...
Учитывая этот ГСЧ, вы можете «нарисовать» 10 (или 15, см. Ниже) чисел от 1 до 25. Для этого может потребоваться умножить (и округлить) случайное число, полученное генератором, и игнорировать числа, которые являются выше 25 (т.е. отрисовка снова), в зависимости от точного API, связанного с ГСЧ, но опять же получение чертежа в заданном диапазоне является тривиальным. Вам также нужно будет перерисовать, когда число снова появится.
Я предлагаю вам получить только 10 чисел, поскольку их можно удалить из полной последовательности 1-25, чтобы получить набор 15. Другими словами, рисунок 15, который нужно вставить, - это тот же рисунок 10, который нужно вынуть ...
Далее вам необходимо подтвердить уникальность наборов. Вместо того, чтобы хранить весь набор, вы можете использовать хеш для уникальной идентификации каждого набора. Это должно занимать менее 25 бит, поэтому может храниться в 32-битном целом числе. Затем вам необходимо иметь эффективное хранилище для 100 000 из этих значений; если вы не хотите сохранить это в базе данных.
В этом вопросе об уникальности 100 000 наборов из всех возможных наборов вероятность столкновения кажется относительно низкой. Редактировать: Упс ... Я был оптимистичен ... Эта вероятность не так мала, с вероятностью около 1,5% столкновения, начавшегося после рисования 50 000-го, будет довольно много коллизий, достаточных для того, чтобы система исключила их ...