Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function getRandom():Object
- {
- var rnd:int = Math.random() * _totalWeight;
- var fIndex:int = 0;
- var lIndex:int = _elements.length - 1;
- trace("rnd: ", rnd);
- trace("start index: ", fIndex, lIndex);
- /**
- * тут проверяем с какого края нам ближе к указанному элементу
- */
- if (rnd < _elements.length * 0.5)
- {
- /**
- * тут проходим с начала вектора к концу
- */
- while (_elements[fIndex + 1].checkPoint <= rnd && fIndex < _elements.length - 1)
- {
- fIndex ++;
- }
- trace("last index: ", fIndex, lIndex);
- return _elements[fIndex].data;
- }
- else
- {
- /**
- * а тут с конца к началу
- */
- while (_elements[lIndex - 1].checkPoint >= rnd)
- {
- lIndex --;
- }
- trace("last index: ", fIndex, lIndex);
- return _elements[lIndex].data;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement