Показать сообщение отдельно
Старый 22.01.2010, 22:14     # 9
Ran
Guest
 
Сообщения: n/a

Спасибо за предложенные варианты... Но, боюсь, такие алгоритмы будут тяжеловаты (в плане времени выполнения и вообще выполнимости) для моей программы.
Проблема заключается в том, что изначально массив забит нулями. А в процессе работы (при проводении сотен или даже тысяч итераций) его значения должны меняться. Я придумал возможный выход из такого положения, но хотелось бы услышать мнение экспертов, так сказать
Random ran = new Random();
int count = ran.Next(0, var.Sum());
int s = 0, giv = 0;
for(int i = 0; i < var.lenght; i++)
{
if(сount <= s) {giv = var[i]; break;}
s+= var[i];
}
Таким образом у нас будет сумма чисел, разбитая на кусочки, в один из которых должен угодить рандом. Как только мы видим, что рандомное число меньше начала следующего кусочка, берем число с индексом предыдущего и получаем как раз то, что нам требовалось выбрать.
Вроде бы, вероятности при этом не искажаются, но хочется быть уверенным.

Последний раз редактировалось Ran; 22.01.2010 в 22:29.