Advertisement
Guest User

Untitled

a guest
Aug 19th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. public function getRandom():Object
  2.         {
  3.             var rnd:int = Math.random() * _totalWeight;
  4.             var fIndex:int = 0;
  5.             var lIndex:int = _elements.length - 1;
  6.  
  7.             trace("rnd: ", rnd);
  8.             trace("start index: ", fIndex, lIndex);
  9.  
  10.             /**
  11.              * тут проверяем с какого края нам ближе к указанному элементу
  12.              */
  13.             if (rnd < _elements.length * 0.5)
  14.             {
  15.                 /**
  16.                  * тут проходим с начала вектора к концу
  17.                  */
  18.                 while (_elements[fIndex + 1].checkPoint <= rnd && fIndex < _elements.length - 1)
  19.                 {
  20.                     fIndex ++;
  21.                 }
  22.  
  23.                 trace("last index: ", fIndex, lIndex);
  24.                 return _elements[fIndex].data;
  25.             }
  26.             else
  27.             {
  28.                 /**
  29.                  * а тут с конца к началу
  30.                  */
  31.                 while (_elements[lIndex - 1].checkPoint >= rnd)
  32.                 {
  33.                     lIndex --;
  34.                 }
  35.  
  36.                 trace("last index: ", fIndex, lIndex);
  37.                 return _elements[lIndex].data;
  38.             }
  39.  
  40.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement