Показать сообщение отдельно
Старый 21.01.2010, 17:35     # 1
Ran
Guest
 
Сообщения: n/a

Выбор элемента с пропорциональной ему вероятностью в C#

Вопрос может быть уже задавался не раз, но тем не менее я нигде не нашел ответа на него.

Требуется выбрать число из массива с вероятностью, пропорциональной его величине. Это значит приблизительно следующее:
Есть массив, к примеру:
int var[] = new int[8];
var = {1, 0, 0, 2, 5, 2, 4, 1};

Нужен алгоритм, который бы возвращал одно из этих чисел, но с пропорциональной этому числу вероятностью, т.е. шансы быть выбранным у элемента '5' самые большие, а у элементов '0' - самые маленькие, но все же они должны выпадать.

Этот алгоритм надо будет запускать в многоитерационном цикле, а результирующее число записывать в переменную, которая будет использована дальше в программе.
Прошу помощи, ибо сам исчерпал подходы к этой проблеме