Предположим, что:
List<element>
какой элемент:
public class Element(){
int Weight {get;set;}
}
Чего я хочу добиться, так это выбрать элемент случайным образом по весу.
Например:
Element_1.Weight = 100;
Element_2.Weight = 50;
Element_3.Weight = 200;
Итак
- шанс, что
Element_1
будет выбран, равен 100 / (100 + 50 + 200) = 28,57%
- шанс, что
Element_2
будет выбран, равен 50 / (100 + 50 + 200) = 14,29%
- шанс, что
Element_3
будет выбран, равен 200 / (100 + 50 + 200) = 57,14%
Я знаю, что могу создать цикл, вычислить итоги и т. Д. *
Что я хочу узнать, так это лучший способ сделать это с помощью Linq в ОДНОЙ строке (или как можно короче), спасибо.
UPDATE
Я нашел свой ответ ниже. Первое, что я узнал, это: Linq НЕ волшебство, он медленнее, чем хорошо продуманный цикл .
Таким образом, мой вопрос становится найти случайный элемент по весу (без как можно более коротких вещей:)