- Timestamp:
- 10/16/15 14:37:31 (9 years ago)
- Location:
- trunk/sources
- Files:
-
- 2 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Common/3.3/EnumerableStatisticExtensions.cs
r12012 r13025 22 22 using System; 23 23 using System.Collections.Generic; 24 using System.Diagnostics.Contracts; 24 25 using System.Linq; 25 26 … … 44 45 } else { 45 46 return (valuesArr[(n / 2) - 1] + valuesArr[n / 2]) / 2.0; 47 } 48 } 49 50 /// <summary> 51 /// Calculates the alpha-quantile element of the enumeration. 52 /// </summary> 53 /// <param name="values"></param> 54 /// <returns></returns> 55 public static double Quantile(this IEnumerable<double> values, double alpha) { 56 Contract.Assert(alpha > 0 && alpha < 1); 57 // iterate only once 58 double[] valuesArr = values.ToArray(); 59 int n = valuesArr.Length; 60 if (n == 0) throw new InvalidOperationException("Enumeration contains no elements."); 61 62 Array.Sort(valuesArr); 63 // starts at 0 64 65 // return the element at Math.Ceiling (if n*alpha is fractional) or the average of two elements if n*alpha is integer. 66 var pos = n * alpha; 67 Contract.Assert(pos >= 0); 68 Contract.Assert(pos < n); 69 bool isInteger = Math.Round(pos).IsAlmost(pos); 70 if (isInteger) { 71 return 0.5 * (valuesArr[(int)pos - 1] + valuesArr[(int)pos]); 72 } else { 73 return valuesArr[(int)Math.Ceiling(pos) - 1]; 46 74 } 47 75 } -
trunk/sources/HeuristicLab.Tests/HeuristicLab.Tests.csproj
r12817 r13025 468 468 <Compile Include="HeuristicLab.Collections-3.3\BidirectionalLookupTest.cs" /> 469 469 <Compile Include="HeuristicLab.Collections-3.3\ObservableKeyedListTest.cs" /> 470 <Compile Include="HeuristicLab.Common-3.3\EnumerableStatisticExtensions.cs" /> 470 471 <Compile Include="HeuristicLab.Encodings.BinaryVectorEncoding-3.3\Auxiliary.cs" /> 471 472 <Compile Include="HeuristicLab.Encodings.BinaryVectorEncoding-3.3\NPointCrossoverTest.cs" /> … … 536 537 <Compile Include="HeuristicLab.Persistence-3.3\StorableAttributeTests.cs" /> 537 538 <Compile Include="HeuristicLab.Persistence-3.3\UseCases.cs" /> 538 <Compile Include="HeuristicLab.PluginInfraStructure-3.3\InstallationManagerTest.cs" />539 <Compile Include="HeuristicLab.PluginInfraStructure-3.3\TypeExtensionsTest.cs" />540 539 <Compile Include="HeuristicLab.Problems.DataAnalysis-3.4\ThresholdCalculatorsTest.cs" /> 541 540 <Compile Include="HeuristicLab.Problems.DataAnalysis-3.4\OnlineCalculatorPerformanceTest.cs" /> … … 629 628 </None> 630 629 <Shadow Include="Test References\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.accessor" /> 631 <Shadow Include="Test References\HeuristicLab.PluginInfrastructure-3.3.accessor" />632 630 <Shadow Include="Test References\HeuristicLab.MainForm.WindowsForms-3.3.accessor" /> 633 631 <Shadow Include="Test References\HeuristicLab.Encodings.IntegerVectorEncoding-3.3.accessor" />
Note: See TracChangeset
for help on using the changeset viewer.