Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod GetRandomIndex ( 
 | 
  RealVector vector 
 | 
) as Number 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    totalweight := vector.Sum();  
 | 
    r := Real::Random(0.0, totalweight );  
 | 
    i := -1; maxindex := vector.Size() - 1;   
 | 
    if (maxindex >= 0 ) // check for empty set 
 | 
    { 
 | 
      cumulativesum := 0.0;  
 | 
      while( i < maxindex and cumulativesum <= r )  
 | 
      { 
 | 
        i++;  
 | 
        cumulativesum := cumulativesum + vector.Get(  i );  
 | 
      } 
 | 
    } 
 | 
    return i; 
 | 
  *] 
 | 
  InterfaceProperties { Accessibility: 'Module' } 
 | 
} 
 |