- Timestamp:
- 01/02/15 16:08:21 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Problems.GrammaticalOptimization/HeuristicLab.Common/Extensions.cs
r11727 r11730 15 15 return xsArr[rand.Next(xsArr.Length)]; 16 16 } 17 18 public static IEnumerable<T> SampleProportional<T>(this IEnumerable<T> source, Random random, IEnumerable<double> weights) { 19 var sourceArray = source.ToArray(); 20 var valueArray = weights.ToArray(); 21 double total = valueArray.Sum(); 22 23 while (true) { 24 int index = 0; 25 double ball = valueArray[index], sum = random.NextDouble() * total; 26 while (ball < sum) 27 ball += valueArray[++index]; 28 yield return sourceArray[index]; 29 } 30 } 17 31 } 18 32 }
Note: See TracChangeset
for help on using the changeset viewer.