Я работал над алгоритмом, где мне нужно выбрать n особей из популяции размера k, где k намного больше, чем n.Все люди имеют значение пригодности, поэтому выбор должен способствовать более высоким значениям пригодности.Однако я не хочу просто выбирать лучших русских людей, у худших тоже должен быть шанс.(Естественный отбор)
Итак, я решил найти минимальные и максимальные значения пригодности в популяции.Таким образом, любой человек будет иметь
p = (текущий - мин) / (max - мин)
вероятность быть выбранным, но я не могу просто перебрать все из них, бросить костии выберите один, если вероятность имеет место, потому что тогда у меня будет более n человек.Я мог бы перетасовать список и выполнять итерации с начала, пока я не получу до n человек, но это может пропустить большие из них до конца списка.
Я также мог бы выполнить более одного прохода до оставшегося размерадоходит до.Но это может во многом способствовать лучшим и сходиться с упомянутым мною наивным методом отбора.
Любое предложение или ссылки на такой процесс отбора?Я мог бы почитать соответствующие статистические методы, если вы можете сослаться на любые.
Спасибо.