У меня есть массив char[] Select = {'A','B','C','D','E','F','G','H','I','J'}
, и каждый элемент в этом массиве имеет различную вероятность выбора. Например,
int[] Weight = {10,30,25,60,20,70,10,80,20,30};
Мое требование - выбрать 5 элементов из этого массива, и элемент с высокими значениями веса имеет более высокую вероятность выбора, и эти 5 элементов должны быть разными.
Мой план - первая сумма веса
int[] weightSum = {10, 40, 65, 125, 145, 215, 225, 305, 325, 355}
Затем я использую Random, чтобы сгенерировать случайное число k
в диапазоне [0,355]. Затем ищем первый элемент, который больше k
в weightSum[]
. Этот процесс повторяется 5 раз.
Проблема в том, что элемент с высокой вероятностью может быть выбран несколько раз. Я пытаюсь удалить дубликаты элементов на каждой итерации. Дубликаты удаляются, но элемент с высокими значениями веса не выбирается.
Как решить эту проблему?
спасибо.