ShadowsInRain:
Ага, я просто не видел ответов, когда писал.
i.o.:
10 - там всегда длина массива, и не важно какого, т.как они должны быть одной длины (если они не будут одинаковыми, то работать не будет).
crazy:

Код:
var upperIndex:uint = weights.length - 1;
А зачем единицу отнимать?

Если длина = 10, то нужные индексы 0..9, т.е. последний нужный индекс = 9, а 9 < 10, если мы отнимем 1, то получится 9 < 9.
mikhailk:
Если уж оптимизировать / нормализировать, то есть смысл начинать искать подходящий вариант не с начала, а пытаться предугадать его позицию, но это может сработать только если распределение более-менее однородное.
Другой вариант, при изменении веса - записывать общую суму (это будет дешевле, чем каждый раз ее пересчитывать).
Опять же, на практике все будет зависеть от того, как часто и какая именно часть алгоритма используется, и какие реальные значения могут быть у весов.