Index: stable/HeuristicLab.Analysis/3.3/HeuristicLab.Analysis-3.3.csproj
===================================================================
--- stable/HeuristicLab.Analysis/3.3/HeuristicLab.Analysis-3.3.csproj	(revision 11173)
+++ stable/HeuristicLab.Analysis/3.3/HeuristicLab.Analysis-3.3.csproj	(revision 11859)
@@ -153,4 +153,5 @@
     <Compile Include="QualityAnalysis\QualityDistributionAnalyzer.cs" />
     <Compile Include="QualityAnalysis\ScaledQualityDifferenceAnalyzer.cs" />
+    <Compile Include="Statistics\NormalDistribution.cs" />
     <Compile Include="ValueAnalysis\SingleValueAnalyzer.cs" />
     <Compile Include="ValueAnalysis\MinAverageMaxValueAnalyzer.cs" />
@@ -236,4 +237,5 @@
     </BootstrapperPackage>
   </ItemGroup>
+  <ItemGroup />
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
@@ -245,5 +247,5 @@
   -->
   <PropertyGroup>
-   <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
 set ProjectDir=$(ProjectDir)
 set SolutionDir=$(SolutionDir)
@@ -252,5 +254,5 @@
 call PreBuildEvent.cmd
 </PreBuildEvent>
-<PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
+    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
 export ProjectDir=$(ProjectDir)
 export SolutionDir=$(SolutionDir)
Index: stable/HeuristicLab.Analysis/3.3/Statistics/NormalDistribution.cs
===================================================================
--- stable/HeuristicLab.Analysis/3.3/Statistics/NormalDistribution.cs	(revision 11859)
+++ stable/HeuristicLab.Analysis/3.3/Statistics/NormalDistribution.cs	(revision 11859)
@@ -0,0 +1,68 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Common;
+
+namespace HeuristicLab.Analysis.Statistics {
+  public static class NormalDistribution {
+    public static double[] Density(double[] x, double mean, double stdDev) {
+      double[] result = new double[x.Length];
+
+      for (int i = 0; i < x.Length; i++) {
+        result[i] = (1.0 / (stdDev * Math.Sqrt(2.0 * Math.PI))) *
+                    Math.Exp(-((Math.Pow(x[i] - mean, 2.0)) /
+                               (2.0 * Math.Pow(stdDev, 2.0))));
+      }
+
+      return result;
+    }
+
+    // based on the idea from http://www.statmethods.net/graphs/density.html
+    public static List<Tuple<double, double>> Density(double[] x, int nrOfPoints, double stepWidth) {
+      double[] newX = new double[nrOfPoints];
+      double mean = x.Average();
+      double stdDev = x.StandardDeviation();
+      double margin = stepWidth * 2;
+
+      double dataMin = x.Min() - margin;
+      double dataMax = x.Max() + margin;
+      double diff = (dataMax - dataMin) / nrOfPoints;
+      double cur = dataMin;
+      newX[0] = cur;
+      for (int i = 1; i < nrOfPoints; i++) {
+        cur += diff;
+        newX[i] = cur;
+      }
+
+      var y = Density(newX, mean, stdDev).Select(k => k * stepWidth * x.Length).ToList();
+
+      var points = new List<Tuple<double, double>>();
+      for (int i = 0; i < newX.Length; i++) {
+        points.Add(new Tuple<double, double>(newX[i], y[i]));
+      }
+
+      return points;
+    }
+  }
+}
