Может подскажите какой нить простенький алгоритм по выделению n элементов из массива с x шансом? (тоесть нужно выделить например 5 элементов из 10, и у всех 10 есть какой то шанс от 0 до 1 (в сумме 1) тоесть если у всех 10 элементов шанс 0.1 то генерация полностью рандомная.
Разбивай на интервалы и смотри в какой интервал попал рандом. Скажем у тебя есть 3 элемента с вероятностями 0.5, 0.3, 0.2. Получается диапазон. 0 - 0.5, 0.5 - 0.8, 0.8 - 1. Вызываешь рандом и смотришь в какой интервал попал. Скажем рандом вернул 0.7 значит попали во 2й элемент. Идея понятна?