У меня есть следующая проблема:Выберите объект случайным образом с различной вероятностью
Мне нужно, чтобы выбрать случайный объект из List
. Это просто, если все элементы будут иметь одинаковый шанс.
В моем случае вероятность того, что объект будет выбран, сохраняется в другом List
. Поэтому мне нужен метод, который случайным образом выбирает элемент из списка на основе другого List
.
EDIT: E.g.
List<String> objects = Arrays.asList("one","two","three");
List<Double> chance = Arrays.asList(0.25, 0.25, 0.5);
Теперь я хочу String
«one
» и «two
» с вероятностью один из четырех и String
«three
» с вероятностью один из двух.
Благодарим за любые советы.
Ваш вопрос не совсем понятен, можете ли вы поделиться каким-то кодом или результатом ввода вывода? –
'тот же шанс' означает, что если ребенок уже выбирает, то больше не выбирайте выбранный интервал? –
Я полагаю, что ваша сумма вероятностей равна 1? Затем просто используйте 'Math.random()', чтобы выбрать число '[0 .. 1)', а затем пройдите, вероятно, 'List' и суммируйте, пока не найдете первый элемент, который превышает вашу сумму. Верните элемент в этот индекс. –