1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  | Quintiq file version 2.0 
 |  #parent: #root 
 |  StaticMethod GetRandomIndex ( 
 |    Reals vector 
 |  ) as Number 
 |  { 
 |    TextBody: 
 |    [* 
 |      totalweight := sum( vector, Elements, v, true, v ); 
 |      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.Element(  i );  
 |        } 
 |      } 
 |      return i; 
 |    *] 
 |    InterfaceProperties { Accessibility: 'Module' } 
 |  } 
 |  
  |