Какой самый краткий способ выбрать случайный элемент по весу в C #?

Предположим:

List , какой элемент:

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 в ОДНОЙ строке (или как можно короче), спасибо.

ОБНОВЛЕНИЕ

Я нашел свой ответ ниже. Первое, что я узнал: Linq НЕ волшебство, он медленнее, чем хорошо продуманный цикл .

Итак, мой вопрос заключается в том, чтобы найти случайный элемент по весу (без как можно более короткого материала :)

11
задан Eric Yin 4 February 2012 в 15:52
поделиться