Index: stable/HeuristicLab 3.3.sln.DotSettings
===================================================================
--- stable/HeuristicLab 3.3.sln.DotSettings	(revision 14304)
+++ stable/HeuristicLab 3.3.sln.DotSettings	(revision 14305)
@@ -1,3 +1,4 @@
 ﻿<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
+    <s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp50</s:String>
 	<s:Boolean x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=32F5B2BD4CFE0E42ADE73B7FB68EBDD0/Entry/=A4284AC46CC5F44FB8DB9B563AE61B01/@KeyIndexDefined">False</s:Boolean>
 	<s:String x:Key="/Default/PatternsAndTemplates/LiveTemplates/QuickList/=32F5B2BD4CFE0E42ADE73B7FB68EBDD0/Entry/=A4284AC46CC5F44FB8DB9B563AE61B01/EntryName/@EntryValue"></s:String>
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/HeuristicLab.Problems.Instances.DataAnalysis-3.3.csproj
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/HeuristicLab.Problems.Instances.DataAnalysis-3.3.csproj	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/HeuristicLab.Problems.Instances.DataAnalysis-3.3.csproj	(revision 14305)
@@ -24,4 +24,5 @@
     <WarningLevel>4</WarningLevel>
     <Prefer32Bit>false</Prefer32Bit>
+    <LangVersion>5</LangVersion>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
@@ -33,4 +34,5 @@
     <WarningLevel>4</WarningLevel>
     <Prefer32Bit>false</Prefer32Bit>
+    <LangVersion>5</LangVersion>
   </PropertyGroup>
   <PropertyGroup>
@@ -54,4 +56,5 @@
     <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
     <Prefer32Bit>false</Prefer32Bit>
+    <LangVersion>5</LangVersion>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
@@ -71,4 +74,5 @@
     <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
     <Prefer32Bit>false</Prefer32Bit>
+    <LangVersion>5</LangVersion>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
@@ -86,4 +90,5 @@
     <CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
     <Prefer32Bit>false</Prefer32Bit>
+    <LangVersion>5</LangVersion>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
@@ -103,4 +108,5 @@
     <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
     <Prefer32Bit>false</Prefer32Bit>
+    <LangVersion>5</LangVersion>
   </PropertyGroup>
   <ItemGroup>
@@ -172,5 +178,5 @@
     <Compile Include="Regression\Korns\KornsFunctionEleven.cs" />
     <Compile Include="Regression\Korns\KornsFunctionFive.cs" />
-    <Compile Include="Regression\Korns\KornsFunctionFiveteen.cs" />
+    <Compile Include="Regression\Korns\KornsFunctionFifteen.cs" />
     <Compile Include="Regression\Korns\KornsFunctionFour.cs" />
     <Compile Include="Regression\Korns\KornsFunctionFourteen.cs" />
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/FeatureSelection/FeatureSelectionInstanceProvider.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/FeatureSelection/FeatureSelectionInstanceProvider.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/FeatureSelection/FeatureSelectionInstanceProvider.cs	(revision 14305)
@@ -41,4 +41,14 @@
       get { return ""; }
     }
+    public int Seed { get; private set; }
+
+    public FeatureSelectionInstanceProvider() : base() {
+      Seed = (int)DateTime.Now.Ticks;
+    }
+
+    public FeatureSelectionInstanceProvider(int seed) : base() {
+      Seed = seed;
+    }
+
 
     public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
@@ -46,10 +56,13 @@
       var pp = new double[] { 0.1, 0.25, 0.5 };
       var noiseRatios = new double[] { 0.01, 0.05, 0.1, 0.2 };
-      var mt = new MersenneTwister();
-      var xGenerator = new NormalDistributedRandom(mt, 0, 1);
-      var weightGenerator = new UniformDistributedRandom(mt, 0, 10);
+      var rand = new MersenneTwister((uint)Seed); // use fixed seed for deterministic problem generation
+
       return (from size in sizes
               from p in pp
               from noiseRatio in noiseRatios
+              let instanceSeed = rand.Next()
+              let mt = new MersenneTwister((uint)instanceSeed)
+              let xGenerator = new NormalDistributedRandom(mt, 0, 1)
+              let weightGenerator = new UniformDistributedRandom(mt, 0, 10)
               select new FeatureSelection(size, p, noiseRatio, xGenerator, weightGenerator))
               .Cast<IDataDescriptor>()
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Friedman/FriedmanRandomFunctionInstanceProvider.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Friedman/FriedmanRandomFunctionInstanceProvider.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Friedman/FriedmanRandomFunctionInstanceProvider.cs	(revision 14305)
@@ -40,9 +40,17 @@
       get { return "Friedman, Jerome H. 'Greedy function approximation: a gradient boosting machine.' Annals of statistics (2001): 1189-1232."; }
     }
+    public int Seed { get; private set; }
+
+    public FriedmanRandomFunctionInstanceProvider() : base() {
+    }
+
+    public FriedmanRandomFunctionInstanceProvider(int seed) : base() {
+      Seed = seed;
+    }
 
     public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
       var numVariables = new int[] { 10, 25, 50, 100 };
       var noiseRatios = new double[] { 0.01, 0.05, 0.1 };
-      var rand = new System.Random(1234); // use fixed seed for deterministic problem generation
+      var rand = new MersenneTwister((uint)Seed); // use fixed seed for deterministic problem generation
       return (from size in numVariables
               from noiseRatio in noiseRatios
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerFunctionEleven.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerFunctionEleven.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerFunctionEleven.cs	(revision 14305)
@@ -24,4 +24,5 @@
 using System.Linq;
 using HeuristicLab.Common;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -47,5 +48,11 @@
     protected override int TestPartitionStart { get { return 20; } }
     protected override int TestPartitionEnd { get { return 20 + (601 * 601); } }
+    public int Seed { get; private set; }
 
+    public KeijzerFunctionEleven() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KeijzerFunctionEleven(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
@@ -54,7 +61,7 @@
 
       var combinations = ValueGenerator.GenerateAllCombinationsOfValuesInLists(testData).ToList();
-
+      var rand = new MersenneTwister((uint)Seed);
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(20, -3, 3).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), 20, -3, 3).ToList());
         data[i].AddRange(combinations[i]);
       }
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerFunctionFifteen.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerFunctionFifteen.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerFunctionFifteen.cs	(revision 14305)
@@ -24,4 +24,5 @@
 using System.Linq;
 using HeuristicLab.Common;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -46,5 +47,11 @@
     protected override int TestPartitionStart { get { return 20; } }
     protected override int TestPartitionEnd { get { return 20 + (601 * 601); } }
+    public int Seed { get; private set; }
 
+    public KeijzerFunctionFifteen() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KeijzerFunctionFifteen(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
@@ -53,7 +60,8 @@
 
       var combinations = ValueGenerator.GenerateAllCombinationsOfValuesInLists(testData).ToList();
+      var rand = new MersenneTwister((uint)Seed);
 
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(20, -3, 3).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), 20, -3, 3).ToList());
         data[i].AddRange(combinations[i]);
       }
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerFunctionFive.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerFunctionFive.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerFunctionFive.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -45,10 +46,18 @@
     protected override int TestPartitionStart { get { return 1000; } }
     protected override int TestPartitionEnd { get { return 11000; } }
+    public int Seed { get; private set; }
 
+    public KeijzerFunctionFive() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KeijzerFunctionFive(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -1, 1).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 1, 2).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -1, 1).ToList());
+      var rand = new MersenneTwister((uint)Seed);
+
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -1, 1).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 2).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -1, 1).ToList());
 
       double x, y, z;
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerFunctionFourteen.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerFunctionFourteen.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerFunctionFourteen.cs	(revision 14305)
@@ -24,4 +24,5 @@
 using System.Linq;
 using HeuristicLab.Common;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -46,14 +47,23 @@
     protected override int TestPartitionStart { get { return 20; } }
     protected override int TestPartitionEnd { get { return 20 + (601 * 601); } }
+    public int Seed { get; private set; }
+
+    public KeijzerFunctionFourteen() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KeijzerFunctionFourteen(int seed) : base() {
+      Seed = seed;
+    }
+
 
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
-      List<double> oneVariableTestData = SequenceGenerator.GenerateSteps(-3, 3, 0.01m).Select(v => (double) v).ToList();
+      List<double> oneVariableTestData = SequenceGenerator.GenerateSteps(-3, 3, 0.01m).Select(v => (double)v).ToList();
       List<List<double>> testData = new List<List<double>>() { oneVariableTestData, oneVariableTestData };
 
       var combinations = ValueGenerator.GenerateAllCombinationsOfValuesInLists(testData).ToList();
+      var rand = new MersenneTwister((uint)Seed);
 
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(20, -3, 3).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), 20, -3, 3).ToList());
         data[i].AddRange(combinations[i]);
       }
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerFunctionTen.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerFunctionTen.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerFunctionTen.cs	(revision 14305)
@@ -24,4 +24,5 @@
 using System.Linq;
 using HeuristicLab.Common;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -46,5 +47,11 @@
     protected override int TestPartitionStart { get { return 100; } }
     protected override int TestPartitionEnd { get { return 100 + (101 * 101); } }
+    public int Seed { get; private set; }
 
+    public KeijzerFunctionTen() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KeijzerFunctionTen(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
@@ -54,6 +61,7 @@
 
       var combinations = ValueGenerator.GenerateAllCombinationsOfValuesInLists(testData).ToList<IEnumerable<double>>();
+      var rand = new MersenneTwister((uint)Seed);
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(100, 0, 1).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), 100, 0, 1).ToList());
         data[i].AddRange(combinations[i]);
       }
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerFunctionThirteen.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerFunctionThirteen.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerFunctionThirteen.cs	(revision 14305)
@@ -24,4 +24,5 @@
 using System.Linq;
 using HeuristicLab.Common;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -46,5 +47,11 @@
     protected override int TestPartitionStart { get { return 20; } }
     protected override int TestPartitionEnd { get { return 20 + (601 * 601); } }
+    public int Seed { get; private set; }
 
+    public KeijzerFunctionThirteen() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KeijzerFunctionThirteen(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
@@ -53,7 +60,8 @@
 
       var combinations = ValueGenerator.GenerateAllCombinationsOfValuesInLists(testData).ToList();
+      var rand = new MersenneTwister((uint)Seed);
 
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(20, -3, 3).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), 20, -3, 3).ToList());
         data[i].AddRange(combinations[i]);
       }
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerFunctionTwelve.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerFunctionTwelve.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerFunctionTwelve.cs	(revision 14305)
@@ -24,4 +24,5 @@
 using System.Linq;
 using HeuristicLab.Common;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -46,5 +47,11 @@
     protected override int TestPartitionStart { get { return 20; } }
     protected override int TestPartitionEnd { get { return 20 + (601 * 601); } }
+    public int Seed { get; private set; }
 
+    public KeijzerFunctionTwelve() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KeijzerFunctionTwelve(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
@@ -53,7 +60,8 @@
 
       var combinations = ValueGenerator.GenerateAllCombinationsOfValuesInLists(testData).ToList();
+      var rand = new MersenneTwister((uint)Seed);
 
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(20, -3, 3).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), 20, -3, 3).ToList());
         data[i].AddRange(combinations[i]);
       }
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerInstanceProvider.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerInstanceProvider.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Keijzer/KeijzerInstanceProvider.cs	(revision 14305)
@@ -22,4 +22,5 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -37,22 +38,30 @@
       get { return "McDermott et al., 2012 \"Genetic Programming Needs Better Benchmarks\", in Proc. of GECCO 2012."; }
     }
+    public int Seed { get; private set; }
+
+    public KeijzerInstanceProvider() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KeijzerInstanceProvider(int seed) : base() {
+      Seed = seed;
+    }
 
     public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
       List<IDataDescriptor> descriptorList = new List<IDataDescriptor>();
+      var rand = new MersenneTwister((uint)Seed);
       descriptorList.Add(new KeijzerFunctionOne());
       descriptorList.Add(new KeijzerFunctionTwo());
       descriptorList.Add(new KeijzerFunctionThree());
       descriptorList.Add(new KeijzerFunctionFour());
-      descriptorList.Add(new KeijzerFunctionFive());
+      descriptorList.Add(new KeijzerFunctionFive(rand.Next()));
       descriptorList.Add(new KeijzerFunctionSix());
       descriptorList.Add(new KeijzerFunctionSeven());
       descriptorList.Add(new KeijzerFunctionEight());
       descriptorList.Add(new KeijzerFunctionNine());
-      descriptorList.Add(new KeijzerFunctionTen());
-      descriptorList.Add(new KeijzerFunctionEleven());
-      descriptorList.Add(new KeijzerFunctionTwelve());
-      descriptorList.Add(new KeijzerFunctionThirteen());
-      descriptorList.Add(new KeijzerFunctionFourteen());
-      descriptorList.Add(new KeijzerFunctionFifteen());
+      descriptorList.Add(new KeijzerFunctionTen(rand.Next()));
+      descriptorList.Add(new KeijzerFunctionEleven(rand.Next()));
+      descriptorList.Add(new KeijzerFunctionTwelve(rand.Next()));
+      descriptorList.Add(new KeijzerFunctionThirteen(rand.Next()));
+      descriptorList.Add(new KeijzerFunctionFourteen(rand.Next()));
+      descriptorList.Add(new KeijzerFunctionFifteen(rand.Next()));
       return descriptorList;
     }
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionEight.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionEight.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionEight.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -51,11 +52,21 @@
     protected override int TestPartitionEnd { get { return 20000; } }
 
+    public int Seed { get; private set; }
+
+    public KornsFunctionEight() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KornsFunctionEight(int seed) : base() {
+      Seed = seed;
+    }
+
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 50).ToList()); // note: range is only [0,50] to prevent NaN values (deviates from gp benchmark paper)
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 50).ToList()); // note: range is only [0,50] to prevent NaN values (deviates from gp benchmark paper)
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 50).ToList()); // note: range is only [0,50] to prevent NaN values (deviates from gp benchmark paper)
+      var rand = new MersenneTwister((uint)Seed);
+
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 50).ToList()); // note: range is only [0,50] to prevent NaN values (deviates from gp benchmark paper)
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 50).ToList()); // note: range is only [0,50] to prevent NaN values (deviates from gp benchmark paper)
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 50).ToList()); // note: range is only [0,50] to prevent NaN values (deviates from gp benchmark paper)
 
       double x0, x3, x4;
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionEleven.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionEleven.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionEleven.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -49,9 +50,17 @@
     protected override int TestPartitionStart { get { return 10000; } }
     protected override int TestPartitionEnd { get { return 20000; } }
+    public int Seed { get; private set; }
 
+    public KornsFunctionEleven() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KornsFunctionEleven(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
+      var rand = new MersenneTwister((uint)Seed);
+
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
       }
 
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionFifteen.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionFifteen.cs	(revision 14305)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionFifteen.cs	(revision 14305)
@@ -0,0 +1,85 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2016 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.Random;
+
+namespace HeuristicLab.Problems.Instances.DataAnalysis {
+  public class KornsFunctionFifteen : ArtificialRegressionDataDescriptor {
+
+    public override string Name { get { return "Korns 15 y = 12.0 - (6.0 * ((tan(X0) / exp(X1)) * (ln(X2) - tan(X3))))"; } }
+    public override string Description {
+      get {
+        return "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
+        + "Authors: Michael F. Korns" + Environment.NewLine
+        + "Function: y = 12.0 - (6.0 * ((tan(X0) / exp(X1)) * (ln(X2) - tan(X3))))" + Environment.NewLine
+        + "Binary Operators: +, -, *, % (protected division)" + Environment.NewLine
+        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, ln(|x|) (protected log), exp" + Environment.NewLine
+        + "Constants: random finit 64-bit IEEE double" + Environment.NewLine
+        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
+        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
+        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
+        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"" + Environment.NewLine + Environment.NewLine
+        + "Note: Because of the logarithm and the exponential function as denominator only non-negatic values are created for their input variables!";
+      }
+    }
+    protected override string TargetVariable { get { return "Y"; } }
+    protected override string[] VariableNames { get { return new string[] { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
+    protected override string[] AllowedInputVariables { get { return new string[] { "X0", "X1", "X2", "X3", "X4" }; } }
+    protected override int TrainingPartitionStart { get { return 0; } }
+    protected override int TrainingPartitionEnd { get { return 10000; } }
+    protected override int TestPartitionStart { get { return 10000; } }
+    protected override int TestPartitionEnd { get { return 20000; } }
+    public int Seed { get; private set; }
+
+
+    public KornsFunctionFifteen() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KornsFunctionFifteen(int seed) : base() {
+      Seed = seed;
+    }
+    protected override List<List<double>> GenerateValues() {
+      List<List<double>> data = new List<List<double>>();
+      var rand = new MersenneTwister((uint)Seed);
+
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList()); 
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 50).ToList()); // note: range is only [0,50] to prevent NaN values (deviates from gp benchmark paper)
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
+
+      double x0, x1, x2, x3;
+      List<double> results = new List<double>();
+      for (int i = 0; i < data[0].Count; i++) {
+        x0 = data[0][i];
+        x1 = data[1][i];
+        x2 = data[2][i];
+        x3 = data[3][i];
+        results.Add(12.0 - (6.0 * ((Math.Tan(x0) / Math.Exp(x1)) * (Math.Log(x2) - Math.Tan(x3)))));
+      }
+      data.Add(results);
+
+      return data;
+    }
+  }
+}
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionFive.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionFive.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionFive.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -50,12 +51,20 @@
     protected override int TestPartitionStart { get { return 10000; } }
     protected override int TestPartitionEnd { get { return 20000; } }
+    public int Seed { get; private set; }
 
+    public KornsFunctionFive() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KornsFunctionFive(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 50).ToList()); // note: range is only [0,50] to prevent NaN values (deviates from gp benchmark paper)
+      var rand = new MersenneTwister((uint)Seed);
+
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 50).ToList()); // note: range is only [0,50] to prevent NaN values (deviates from gp benchmark paper)
 
       double x4;
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionFiveteen.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionFiveteen.cs	(revision 14304)
+++ 	(revision )
@@ -1,75 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2016 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;
-
-namespace HeuristicLab.Problems.Instances.DataAnalysis {
-  public class KornsFunctionFiveteen : ArtificialRegressionDataDescriptor {
-
-    public override string Name { get { return "Korns 15 y = 12.0 - (6.0 * ((tan(X0) / exp(X1)) * (ln(X2) - tan(X3))))"; } }
-    public override string Description {
-      get {
-        return "Paper: Accuracy in Symbolic Regression" + Environment.NewLine
-        + "Authors: Michael F. Korns" + Environment.NewLine
-        + "Function: y = 12.0 - (6.0 * ((tan(X0) / exp(X1)) * (ln(X2) - tan(X3))))" + Environment.NewLine
-        + "Binary Operators: +, -, *, % (protected division)" + Environment.NewLine
-        + "Unary Operators: sqrt, square, cube, cos, sin, tan, tanh, ln(|x|) (protected log), exp" + Environment.NewLine
-        + "Constants: random finit 64-bit IEEE double" + Environment.NewLine
-        + "\"Our testing regimen uses only statistical best practices out-of-sample testing techniques. "
-        + "We test each of the test cases on matrices of 10000 rows by 1 to 5 columns with no noise. "
-        + "For each test a training matrix is filled with random numbers between -50 and +50. The test case "
-        + "target expressions are limited to one basis function whose maximum depth is three grammar nodes.\"" + Environment.NewLine + Environment.NewLine
-        + "Note: Because of the logarithm and the exponential function as denominator only non-negatic values are created for their input variables!";
-      }
-    }
-    protected override string TargetVariable { get { return "Y"; } }
-    protected override string[] VariableNames { get { return new string[] { "X0", "X1", "X2", "X3", "X4", "Y" }; } }
-    protected override string[] AllowedInputVariables { get { return new string[] { "X0", "X1", "X2", "X3", "X4" }; } }
-    protected override int TrainingPartitionStart { get { return 0; } }
-    protected override int TrainingPartitionEnd { get { return 10000; } }
-    protected override int TestPartitionStart { get { return 10000; } }
-    protected override int TestPartitionEnd { get { return 20000; } }
-
-    protected override List<List<double>> GenerateValues() {
-      List<List<double>> data = new List<List<double>>();
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList()); 
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 50).ToList()); // note: range is only [0,50] to prevent NaN values (deviates from gp benchmark paper)
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
-
-      double x0, x1, x2, x3;
-      List<double> results = new List<double>();
-      for (int i = 0; i < data[0].Count; i++) {
-        x0 = data[0][i];
-        x1 = data[1][i];
-        x2 = data[2][i];
-        x3 = data[3][i];
-        results.Add(12.0 - (6.0 * ((Math.Tan(x0) / Math.Exp(x1)) * (Math.Log(x2) - Math.Tan(x3)))));
-      }
-      data.Add(results);
-
-      return data;
-    }
-  }
-}
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionFour.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionFour.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionFour.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -50,9 +51,16 @@
     protected override int TestPartitionEnd { get { return 20000; } }
 
+    public int Seed { get; private set; }
 
+    public KornsFunctionFour() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KornsFunctionFour(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
+      var rand = new MersenneTwister((uint)Seed);
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
       }
 
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionFourteen.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionFourteen.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionFourteen.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -49,9 +50,16 @@
     protected override int TestPartitionStart { get { return 10000; } }
     protected override int TestPartitionEnd { get { return 20000; } }
+    public int Seed { get; private set; }
 
+    public KornsFunctionFourteen() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KornsFunctionFourteen(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
+      var rand = new MersenneTwister((uint)Seed);
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
       }
 
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionNine.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionNine.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionNine.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -51,12 +52,20 @@
     protected override int TestPartitionStart { get { return 10000; } }
     protected override int TestPartitionEnd { get { return 20000; } }
+    public int Seed { get; private set; }
 
+    public KornsFunctionNine() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KornsFunctionNine(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 50).ToList()); // note: range is only [0,50] to prevent NaN values (deviates from gp benchmark paper)
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 50).ToList()); // note: range is only [0,50] to prevent NaN values (deviates from gp benchmark paper)
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList()); 
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
+      var rand = new MersenneTwister((uint)Seed);
+
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 50).ToList()); // note: range is only [0,50] to prevent NaN values (deviates from gp benchmark paper)
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 50).ToList()); // note: range is only [0,50] to prevent NaN values (deviates from gp benchmark paper)
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList()); 
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
 
       double x0, x1, x2, x3;
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionOne.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionOne.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionOne.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -50,9 +51,17 @@
     protected override int TestPartitionStart { get { return 10000; } }
     protected override int TestPartitionEnd { get { return 20000; } }
+    public int Seed { get; private set; }
 
+    public KornsFunctionOne() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KornsFunctionOne(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
+      var rand = new MersenneTwister((uint)Seed);
+
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
       }
 
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionSeven.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionSeven.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionSeven.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -50,12 +51,17 @@
     protected override int TestPartitionStart { get { return 10000; } }
     protected override int TestPartitionEnd { get { return 20000; } }
+    public int Seed { get; private set; }
 
+    public KornsFunctionSeven() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KornsFunctionSeven(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
+      var rand = new MersenneTwister((uint)Seed);
+
+      for (int i = 0; i < 5; i++)
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
 
       double x0;
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionSix.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionSix.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionSix.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -50,12 +51,20 @@
     protected override int TestPartitionStart { get { return 10000; } }
     protected override int TestPartitionEnd { get { return 20000; } }
+    public int Seed { get; private set; }
 
+    public KornsFunctionSix() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KornsFunctionSix(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 50).ToList()); // note: range is only [0,50] to prevent NaN values (deviates from gp benchmark paper)
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList()); 
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList()); 
+      var rand = new MersenneTwister((uint)Seed);
+
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 50).ToList()); // note: range is only [0,50] to prevent NaN values (deviates from gp benchmark paper)
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList()); 
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList()); 
 
       double x0;
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionTen.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionTen.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionTen.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -49,9 +50,17 @@
     protected override int TestPartitionStart { get { return 10000; } }
     protected override int TestPartitionEnd { get { return 20000; } }
+    public int Seed { get; private set; }
 
+    public KornsFunctionTen() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KornsFunctionTen(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
+      var rand = new MersenneTwister((uint)Seed);
+
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
       }
 
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionThirteen.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionThirteen.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionThirteen.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -49,9 +50,17 @@
     protected override int TestPartitionStart { get { return 10000; } }
     protected override int TestPartitionEnd { get { return 20000; } }
+    public int Seed { get; private set; }
 
+    public KornsFunctionThirteen() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KornsFunctionThirteen(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
+      var rand = new MersenneTwister((uint)Seed);
+
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
       }
 
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionThree.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionThree.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionThree.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -49,9 +50,16 @@
     protected override int TestPartitionStart { get { return 10000; } }
     protected override int TestPartitionEnd { get { return 20000; } }
+    public int Seed { get; private set; }
 
+    public KornsFunctionThree() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KornsFunctionThree(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
+      var rand = new MersenneTwister((uint)Seed);
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
       }
 
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionTwelve.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionTwelve.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionTwelve.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -49,9 +50,17 @@
     protected override int TestPartitionStart { get { return 10000; } }
     protected override int TestPartitionEnd { get { return 20000; } }
+    public int Seed { get; private set; }
 
+    public KornsFunctionTwelve() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KornsFunctionTwelve(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
+      var rand = new MersenneTwister((uint)Seed);
+
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
       }
 
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionTwo.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionTwo.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsFunctionTwo.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -49,9 +50,17 @@
     protected override int TestPartitionStart { get { return 10000; } }
     protected override int TestPartitionEnd { get { return 20000; } }
+    public int Seed { get; private set; }
 
+    public KornsFunctionTwo() : this((int)System.DateTime.Now.Ticks) {
+    }
+    public KornsFunctionTwo(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
+      var rand = new MersenneTwister((uint)Seed);
+
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -50, 50).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -50, 50).ToList());
       }
 
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsInstanceProvider.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsInstanceProvider.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Korns/KornsInstanceProvider.cs	(revision 14305)
@@ -22,4 +22,5 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -37,22 +38,28 @@
       get { return "McDermott et al., 2012 \"Genetic Programming Needs Better Benchmarks\", in Proc. of GECCO 2012."; }
     }
+    public int Seed { get; private set; }
+    public KornsInstanceProvider() : this((int)System.DateTime.Now.Ticks) { }
+    public KornsInstanceProvider(int seed) : base() {
+      Seed = seed;
+    }
 
     public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
       List<IDataDescriptor> descriptorList = new List<IDataDescriptor>();
-      descriptorList.Add(new KornsFunctionOne());
-      descriptorList.Add(new KornsFunctionTwo());
-      descriptorList.Add(new KornsFunctionThree());
-      descriptorList.Add(new KornsFunctionFour());
-      descriptorList.Add(new KornsFunctionFive());
-      descriptorList.Add(new KornsFunctionSix());
-      descriptorList.Add(new KornsFunctionSeven());
-      descriptorList.Add(new KornsFunctionEight());
-      descriptorList.Add(new KornsFunctionNine());
-      descriptorList.Add(new KornsFunctionTen());
-      descriptorList.Add(new KornsFunctionEleven());
-      descriptorList.Add(new KornsFunctionTwelve());
-      descriptorList.Add(new KornsFunctionThirteen());
-      descriptorList.Add(new KornsFunctionFourteen());
-      descriptorList.Add(new KornsFunctionFiveteen());
+      var rand = new MersenneTwister((uint)Seed);
+      descriptorList.Add(new KornsFunctionOne(rand.Next()));
+      descriptorList.Add(new KornsFunctionTwo(rand.Next()));
+      descriptorList.Add(new KornsFunctionThree(rand.Next()));
+      descriptorList.Add(new KornsFunctionFour(rand.Next()));
+      descriptorList.Add(new KornsFunctionFive(rand.Next()));
+      descriptorList.Add(new KornsFunctionSix(rand.Next()));
+      descriptorList.Add(new KornsFunctionSeven(rand.Next()));
+      descriptorList.Add(new KornsFunctionEight(rand.Next()));
+      descriptorList.Add(new KornsFunctionNine(rand.Next()));
+      descriptorList.Add(new KornsFunctionTen(rand.Next()));
+      descriptorList.Add(new KornsFunctionEleven(rand.Next()));
+      descriptorList.Add(new KornsFunctionTwelve(rand.Next()));
+      descriptorList.Add(new KornsFunctionThirteen(rand.Next()));
+      descriptorList.Add(new KornsFunctionFourteen(rand.Next()));
+      descriptorList.Add(new KornsFunctionFifteen(rand.Next()));
       return descriptorList;
     }
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionEight.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionEight.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionEight.cs	(revision 14305)
@@ -46,7 +46,14 @@
     protected override int TestPartitionEnd { get { return 520; } }
 
+    public int Seed { get; private set; }
+
+    public NguyenFunctionEight() : this((int)System.DateTime.Now.Ticks) { }
+    public NguyenFunctionEight(int seed) : base() {
+      Seed = seed;
+    }
+
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(520, 0, 4).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(Seed, 520, 0, 4).ToList());
 
       double x;
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionEleven.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionEleven.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionEleven.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -45,9 +46,16 @@
     protected override int TestPartitionStart { get { return 20; } }
     protected override int TestPartitionEnd { get { return 1020; } }
+    public int Seed { get; private set; }
 
+    public NguyenFunctionEleven() : this((int)System.DateTime.Now.Ticks) { }
+    public NguyenFunctionEleven(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 1).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 1).ToList());
+      var rand = new MersenneTwister((uint)Seed);
+
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 1).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 1).ToList());
 
       double x, y;
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionFive.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionFive.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionFive.cs	(revision 14305)
@@ -45,8 +45,13 @@
     protected override int TestPartitionStart { get { return 20; } }
     protected override int TestPartitionEnd { get { return 520; } }
+    public int Seed { get; private set; }
 
+    public NguyenFunctionFive() : this((int)System.DateTime.Now.Ticks) { }
+    public NguyenFunctionFive(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(520, -1, 1).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(Seed, 520, -1, 1).ToList());
 
       double x;
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionFour.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionFour.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionFour.cs	(revision 14305)
@@ -45,8 +45,13 @@
     protected override int TestPartitionStart { get { return 20; } }
     protected override int TestPartitionEnd { get { return 520; } }
+    public int Seed { get; private set; }
 
+    public NguyenFunctionFour() : this((int)System.DateTime.Now.Ticks) { }
+    public NguyenFunctionFour(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(520, -1, 1).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(Seed, 520, -1, 1).ToList());
 
       double x;
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionNine.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionNine.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionNine.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -45,9 +46,16 @@
     protected override int TestPartitionStart { get { return 20; } }
     protected override int TestPartitionEnd { get { return 1020; } }
+    public int Seed { get; private set; }
 
+    public NguyenFunctionNine() : this((int)System.DateTime.Now.Ticks) { }
+    public NguyenFunctionNine(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 1).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, 0, 1).ToList());
+      var rand = new MersenneTwister((uint)Seed);
+
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 1).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 0, 1).ToList());
 
       double x, y;
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionOne.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionOne.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionOne.cs	(revision 14305)
@@ -45,8 +45,13 @@
     protected override int TestPartitionStart { get { return 20; } }
     protected override int TestPartitionEnd { get { return 520; } }
+    public int Seed { get; private set; }
 
+    public NguyenFunctionOne() : this((int)System.DateTime.Now.Ticks) { }
+    public NguyenFunctionOne(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(520, -1, 1).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(Seed, 520, -1, 1).ToList());
 
       double x;
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionSeven.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionSeven.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionSeven.cs	(revision 14305)
@@ -46,7 +46,13 @@
     protected override int TestPartitionEnd { get { return 520; } }
 
+    public int Seed { get; private set; }
+
+    public NguyenFunctionSeven() : this((int)System.DateTime.Now.Ticks) { }
+    public NguyenFunctionSeven(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(520, 0, 2).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(Seed, 520, 0, 2).ToList());
 
       double x;
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionSix.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionSix.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionSix.cs	(revision 14305)
@@ -45,8 +45,13 @@
     protected override int TestPartitionStart { get { return 20; } }
     protected override int TestPartitionEnd { get { return 520; } }
+    public int Seed { get; private set; }
 
+    public NguyenFunctionSix() : this((int)System.DateTime.Now.Ticks) { }
+    public NguyenFunctionSix(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(520, -1, 1).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(Seed, 520, -1, 1).ToList());
 
       double x;
@@ -54,5 +59,5 @@
       for (int i = 0; i < data[0].Count; i++) {
         x = data[0][i];
-        results.Add(Math.Sin(x) + Math.Sin(x + x*x));
+        results.Add(Math.Sin(x) + Math.Sin(x + x * x));
       }
       data.Add(results);
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionTen.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionTen.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionTen.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -45,9 +46,16 @@
     protected override int TestPartitionStart { get { return 20; } }
     protected override int TestPartitionEnd { get { return 1020; } }
+    public int Seed { get; private set; }
 
+    public NguyenFunctionTen() : this((int)System.DateTime.Now.Ticks) { }
+    public NguyenFunctionTen(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(1020, 0, 1).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(1020, 0, 1).ToList());
+      var rand = new MersenneTwister((uint)Seed);
+
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), 1020, 0, 1).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), 1020, 0, 1).ToList());
 
       double x, y;
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionThree.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionThree.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionThree.cs	(revision 14305)
@@ -45,8 +45,13 @@
     protected override int TestPartitionStart { get { return 20; } }
     protected override int TestPartitionEnd { get { return 520; } }
+    public int Seed { get; private set; }
 
+    public NguyenFunctionThree() : this((int)System.DateTime.Now.Ticks) { }
+    public NguyenFunctionThree(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(520, -1, 1).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(Seed, 520, -1, 1).ToList());
 
       double x;
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionTwelve.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionTwelve.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionTwelve.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -45,9 +46,16 @@
     protected override int TestPartitionStart { get { return 20; } }
     protected override int TestPartitionEnd { get { return 1020; } }
+    public int Seed { get; private set; }
 
+    public NguyenFunctionTwelve() : this((int)System.DateTime.Now.Ticks) { }
+    public NguyenFunctionTwelve(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(1020, 0, 1).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(1020, 0, 1).ToList());
+      var rand = new MersenneTwister((uint)Seed);
+
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), 1020, 0, 1).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), 1020, 0, 1).ToList());
 
       double x, y;
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionTwo.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionTwo.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenFunctionTwo.cs	(revision 14305)
@@ -45,8 +45,13 @@
     protected override int TestPartitionStart { get { return 20; } }
     protected override int TestPartitionEnd { get { return 520; } }
+    public int Seed { get; private set; }
 
+    public NguyenFunctionTwo() : this((int)System.DateTime.Now.Ticks) { }
+    public NguyenFunctionTwo(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(520, -1, 1).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(Seed, 520, -1, 1).ToList());
 
       double x;
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenInstanceProvider.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenInstanceProvider.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Nguyen/NguyenInstanceProvider.cs	(revision 14305)
@@ -22,4 +22,5 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -37,19 +38,26 @@
       get { return "McDermott et al., 2012 \"Genetic Programming Needs Better Benchmarks\", in Proc. of GECCO 2012."; }
     }
+    public int Seed { get; private set; }
+
+    public NguyenInstanceProvider() : this((int)System.DateTime.Now.Ticks) { }
+    public NguyenInstanceProvider(int seed) : base() {
+      Seed = seed;
+    }
 
     public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
       List<IDataDescriptor> descriptorList = new List<IDataDescriptor>();
-      descriptorList.Add(new NguyenFunctionOne());
-      descriptorList.Add(new NguyenFunctionTwo());
-      descriptorList.Add(new NguyenFunctionThree());
-      descriptorList.Add(new NguyenFunctionFour());
-      descriptorList.Add(new NguyenFunctionFive());
-      descriptorList.Add(new NguyenFunctionSix());
-      descriptorList.Add(new NguyenFunctionSeven());
-      descriptorList.Add(new NguyenFunctionEight());
-      descriptorList.Add(new NguyenFunctionNine());
-      descriptorList.Add(new NguyenFunctionTen());
-      descriptorList.Add(new NguyenFunctionEleven());
-      descriptorList.Add(new NguyenFunctionTwelve());
+      var rand = new MersenneTwister((uint)Seed);
+      descriptorList.Add(new NguyenFunctionOne(rand.Next()));
+      descriptorList.Add(new NguyenFunctionTwo(rand.Next()));
+      descriptorList.Add(new NguyenFunctionThree(rand.Next()));
+      descriptorList.Add(new NguyenFunctionFour(rand.Next()));
+      descriptorList.Add(new NguyenFunctionFive(rand.Next()));
+      descriptorList.Add(new NguyenFunctionSix(rand.Next()));
+      descriptorList.Add(new NguyenFunctionSeven(rand.Next()));
+      descriptorList.Add(new NguyenFunctionEight(rand.Next()));
+      descriptorList.Add(new NguyenFunctionNine(rand.Next()));
+      descriptorList.Add(new NguyenFunctionTen(rand.Next()));
+      descriptorList.Add(new NguyenFunctionEleven(rand.Next()));
+      descriptorList.Add(new NguyenFunctionTwelve(rand.Next()));
       return descriptorList;
     }
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/ValueGenerator.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/ValueGenerator.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/ValueGenerator.cs	(revision 14305)
@@ -26,14 +26,15 @@
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
   internal static class ValueGenerator {
-    private static FastRandom rand = new FastRandom();
 
     /// <summary>
     /// Generates uniformly distributed values between start and end (inclusive!) 
     /// </summary>
+    /// <param name="seed">The seed for the random number generator</param>
     /// <param name="n">Number of values to generate.</param>
     /// <param name="start">The lower value (inclusive)</param>
     /// <param name="end">The upper value (inclusive)</param>
     /// <returns>An enumerable including n values in [start, end]</returns>
-    public static IEnumerable<double> GenerateUniformDistributedValues(int n, double start, double end) {
+    public static IEnumerable<double> GenerateUniformDistributedValues(int seed, int n, double start, double end) {
+      var rand = new FastRandom(seed);
       for (int i = 0; i < n; i++) {
         // we need to return a random value including end.
@@ -47,9 +48,11 @@
     /// Generates normally distributed values sampling from N(mu, sigma) 
     /// </summary>
+    /// <param name="seed">The seed for the random number generator</param>
     /// <param name="n">Number of values to generate.</param>
     /// <param name="mu">The mu parameter of the normal distribution</param>
     /// <param name="sigma">The sigma parameter of the normal distribution</param>
     /// <returns>An enumerable including n values ~ N(mu, sigma)</returns>
-    public static IEnumerable<double> GenerateNormalDistributedValues(int n, double mu, double sigma) {
+    public static IEnumerable<double> GenerateNormalDistributedValues(int seed, int n, double mu, double sigma) {
+      var rand = new FastRandom(seed);
       for (int i = 0; i < n; i++)
         yield return NormalDistributedRandom.NextDouble(rand, mu, sigma);
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/VariableNetworks/VariableNetworkInstanceProvider.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/VariableNetworks/VariableNetworkInstanceProvider.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/VariableNetworks/VariableNetworkInstanceProvider.cs	(revision 14305)
@@ -40,9 +40,15 @@
       get { return ""; }
     }
+    public int Seed { get; private set; }
+
+    public VariableNetworkInstanceProvider() : this((int)DateTime.Now.Ticks) { }
+    public VariableNetworkInstanceProvider(int seed) : base() {
+      Seed = seed;
+    }
 
     public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
       var numVariables = new int[] { 10, 20, 50, 100 };
       var noiseRatios = new double[] { 0.01, 0.05, 0.1 };
-      var rand = new System.Random(1234); // use fixed seed for deterministic problem generation
+      var rand = new MersenneTwister((uint)Seed); // use fixed seed for deterministic problem generation
       return (from size in numVariables
               from noiseRatio in noiseRatios
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Various/BreimanOne.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Various/BreimanOne.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Various/BreimanOne.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Core;
 using HeuristicLab.Random;
 
@@ -43,15 +44,20 @@
     protected override int TestPartitionEnd { get { return 10001; } }
 
-    protected static FastRandom rand = new FastRandom();
+    public int Seed { get; private set; }
+
+    public BreimanOne() : this((int)DateTime.Now.Ticks) { }
+    public BreimanOne(int seed) : base() {
+      Seed = seed;
+    }
 
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
       List<int> values = new List<int>() { -1, 1 };
-      data.Add(GenerateUniformIntegerDistribution(values, TestPartitionEnd));
+      var rand = new MersenneTwister((uint)Seed);
+      data.Add(GenerateUniformIntegerDistribution(rand, values, TestPartitionEnd));
       values.Add(0);
       for (int i = 0; i < AllowedInputVariables.Count() - 1; i++) {
-        data.Add(GenerateUniformIntegerDistribution(values, TestPartitionEnd));
+        data.Add(GenerateUniformIntegerDistribution(rand, values, TestPartitionEnd));
       }
-
       double x1, x2, x3, x4, x5, x6, x7;
       double f;
@@ -79,5 +85,5 @@
     }
 
-    private List<double> GenerateUniformIntegerDistribution(List<int> classes, int amount) {
+    private List<double> GenerateUniformIntegerDistribution(IRandom rand, List<int> classes, int amount) {
       List<double> values = new List<double>();
       for (int i = 0; i < amount; i++) {
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Various/FriedmanOne.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Various/FriedmanOne.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Various/FriedmanOne.cs	(revision 14305)
@@ -42,11 +42,17 @@
     protected override int TestPartitionStart { get { return 5000; } }
     protected override int TestPartitionEnd { get { return 10000; } }
+    public int Seed { get; private set; }
 
-    protected static FastRandom rand = new FastRandom();
+    public FriedmanOne() : this((int)DateTime.Now.Ticks) { }
+
+    public FriedmanOne(int seed) : base() {
+      Seed = seed;
+    }
 
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
+      var rand = new MersenneTwister((uint)Seed);
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(10000, 0, 1).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), 10000, 0, 1).ToList());
       }
 
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Various/FriedmanTwo.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Various/FriedmanTwo.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Various/FriedmanTwo.cs	(revision 14305)
@@ -43,10 +43,17 @@
     protected override int TestPartitionEnd { get { return 10000; } }
 
-    protected static FastRandom rand = new FastRandom();
+    public int Seed { get; private set; }
 
+    public FriedmanTwo() : this((int)DateTime.Now.Ticks) { }
+
+    public FriedmanTwo(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
+      var rand = new MersenneTwister((uint)Seed);
+
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(10000, 0, 1).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), 10000, 0, 1).ToList());
       }
 
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Various/PolyTen.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Various/PolyTen.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Various/PolyTen.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -45,9 +46,17 @@
     protected override int TestPartitionStart { get { return 250; } }
     protected override int TestPartitionEnd { get { return 500; } }
+    public int Seed { get; private set; }
 
+    public PolyTen() : this((int)DateTime.Now.Ticks) { }
+
+    public PolyTen(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
+      var rand = new MersenneTwister((uint)Seed);
+
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -1, 1).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, -1, 1).ToList());
       }
 
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Various/SpatialCoevolution.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Various/SpatialCoevolution.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Various/SpatialCoevolution.cs	(revision 14305)
@@ -24,4 +24,5 @@
 using System.Linq;
 using HeuristicLab.Common;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -50,5 +51,11 @@
     protected override int TestPartitionStart { get { return 676; } }
     protected override int TestPartitionEnd { get { return 1676; } }
+    public int Seed { get; private set; }
 
+    public SpatialCoevolution() : this((int)DateTime.Now.Ticks) { }
+
+    public SpatialCoevolution(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
@@ -57,8 +64,9 @@
       List<List<double>> trainingData = new List<List<double>>() { evenlySpacedSequence, evenlySpacedSequence };
       var combinations = ValueGenerator.GenerateAllCombinationsOfValuesInLists(trainingData).ToList();
+      var rand = new MersenneTwister((uint)Seed);
 
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
         data.Add(combinations[i].ToList());
-        data[i].AddRange(ValueGenerator.GenerateUniformDistributedValues(1000, -5, 5).ToList());
+        data[i].AddRange(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), 1000, -5, 5).ToList());
       }
 
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Various/VariousInstanceProvider.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Various/VariousInstanceProvider.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Various/VariousInstanceProvider.cs	(revision 14305)
@@ -22,4 +22,5 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -37,12 +38,19 @@
       get { return ""; }
     }
+    public int Seed { get; private set; }
 
+    public VariousInstanceProvider() : this((int)DateTime.Now.Ticks) { }
+
+    public VariousInstanceProvider(int seed) : base() {
+      Seed = seed;
+    }
     public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
       List<IDataDescriptor> descriptorList = new List<IDataDescriptor>();
-      descriptorList.Add(new BreimanOne());
-      descriptorList.Add(new FriedmanOne());
-      descriptorList.Add(new FriedmanTwo());
-      descriptorList.Add(new PolyTen());
-      descriptorList.Add(new SpatialCoevolution());
+      var rand = new MersenneTwister((uint)Seed);
+      descriptorList.Add(new BreimanOne(rand.Next()));
+      descriptorList.Add(new FriedmanOne(rand.Next()));
+      descriptorList.Add(new FriedmanTwo(rand.Next()));
+      descriptorList.Add(new PolyTen(rand.Next()));
+      descriptorList.Add(new SpatialCoevolution(rand.Next()));
       return descriptorList;
     }
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Vladislavleva/KotanchekFunction.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Vladislavleva/KotanchekFunction.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Vladislavleva/KotanchekFunction.cs	(revision 14305)
@@ -24,4 +24,5 @@
 using System.Linq;
 using HeuristicLab.Common;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -47,4 +48,11 @@
     protected override int TestPartitionEnd { get { return 100 + (45 * 45); } }
 
+    public int Seed { get; private set; }
+
+    public KotanchekFunction() : this((int)DateTime.Now.Ticks) { }
+
+    public KotanchekFunction(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
@@ -53,6 +61,8 @@
       List<List<double>> testData = new List<List<double>>() { oneVariableTestData, oneVariableTestData };
       var combinations = ValueGenerator.GenerateAllCombinationsOfValuesInLists(testData).ToList<IEnumerable<double>>();
+      var rand = new MersenneTwister((uint)Seed);
+
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(100, 0.3, 4).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), 100, 0.3, 4).ToList());
         data[i].AddRange(combinations[i]);
       }
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Vladislavleva/RationalPolynomialThreeDimensional.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Vladislavleva/RationalPolynomialThreeDimensional.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Vladislavleva/RationalPolynomialThreeDimensional.cs	(revision 14305)
@@ -24,4 +24,5 @@
 using System.Linq;
 using HeuristicLab.Common;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -46,12 +47,19 @@
     protected override int TestPartitionStart { get { return 300; } }
     protected override int TestPartitionEnd { get { return 300 + (15 * 12 * 15); } }
+    public int Seed { get; private set; }
 
+    public RationalPolynomialThreeDimensional() : this((int)DateTime.Now.Ticks) { }
+
+    public RationalPolynomialThreeDimensional(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
 
       int n = 300;
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(n, 0.05, 2).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(n, 1, 2).ToList());
-      data.Add(ValueGenerator.GenerateUniformDistributedValues(n, 0.05, 2).ToList());
+      var rand = new MersenneTwister((uint)Seed);
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), n, 0.05, 2).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), n, 1, 2).ToList());
+      data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), n, 0.05, 2).ToList());
 
       List<List<double>> testData = new List<List<double>>() { 
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Vladislavleva/RationalPolynomialTwoDimensional.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Vladislavleva/RationalPolynomialTwoDimensional.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Vladislavleva/RationalPolynomialTwoDimensional.cs	(revision 14305)
@@ -24,4 +24,5 @@
 using System.Linq;
 using HeuristicLab.Common;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -47,4 +48,11 @@
     protected override int TestPartitionEnd { get { return 50 + (34 * 34); } }
 
+    public int Seed { get; private set; }
+
+    public RationalPolynomialTwoDimensional() : this((int)DateTime.Now.Ticks) { }
+
+    public RationalPolynomialTwoDimensional(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
@@ -54,7 +62,8 @@
       List<List<double>> testData = new List<List<double>>() { oneVariableTestData, oneVariableTestData };
       var combinations = ValueGenerator.GenerateAllCombinationsOfValuesInLists(testData).ToList<IEnumerable<double>>();
+      var rand = new MersenneTwister((uint)Seed);
 
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(50, 0.05, 6.05).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), 50, 0.05, 6.05).ToList());
         data[i].AddRange(combinations[i]);
       }
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Vladislavleva/RippleFunction.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Vladislavleva/RippleFunction.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Vladislavleva/RippleFunction.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -45,13 +46,20 @@
     protected override int TestPartitionStart { get { return 300; } }
     protected override int TestPartitionEnd { get { return 300 + 1000; } }
+    public int Seed { get; private set; }
 
+    public RippleFunction() : this((int)DateTime.Now.Ticks) { }
+
+    public RippleFunction(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
+      var rand = new MersenneTwister((uint)Seed);
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(300, 0.05, 6.05).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), 300, 0.05, 6.05).ToList());
       }
 
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data[i].AddRange(ValueGenerator.GenerateUniformDistributedValues(1000, -0.25, 6.35));
+        data[i].AddRange(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), 1000, -0.25, 6.35));
       }
 
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Vladislavleva/SineCosineFunction.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Vladislavleva/SineCosineFunction.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Vladislavleva/SineCosineFunction.cs	(revision 14305)
@@ -24,4 +24,5 @@
 using System.Linq;
 using HeuristicLab.Common;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -46,5 +47,11 @@
     protected override int TestPartitionStart { get { return 30; } }
     protected override int TestPartitionEnd { get { return 30 + (306 * 306); } }
+    public int Seed { get; private set; }
 
+    public SineCosineFunction() : this((int)DateTime.Now.Ticks) { }
+
+    public SineCosineFunction(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
@@ -53,6 +60,7 @@
       var combinations = ValueGenerator.GenerateAllCombinationsOfValuesInLists(testData).ToList<IEnumerable<double>>();
 
+      var rand = new MersenneTwister((uint)Seed);
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(30, 0.1, 5.9).ToList());
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), 30, 0.1, 5.9).ToList());
         data[i].AddRange(combinations[i]);
       }
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Vladislavleva/UnwrappedBallFunctionFiveDimensional.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Vladislavleva/UnwrappedBallFunctionFiveDimensional.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Vladislavleva/UnwrappedBallFunctionFiveDimensional.cs	(revision 14305)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -45,10 +46,17 @@
     protected override int TestPartitionStart { get { return 1024; } }
     protected override int TestPartitionEnd { get { return 6024; } }
+    public int Seed { get; private set; }
 
+    public UnwrappedBallFunctionFiveDimensional() : this((int)DateTime.Now.Ticks) { }
+
+    public UnwrappedBallFunctionFiveDimensional(int seed) : base() {
+      Seed = seed;
+    }
     protected override List<List<double>> GenerateValues() {
       List<List<double>> data = new List<List<double>>();
+      var rand = new MersenneTwister((uint)Seed);
       for (int i = 0; i < AllowedInputVariables.Count(); i++) {
-        data.Add(ValueGenerator.GenerateUniformDistributedValues(1024, 0.05, 6.05).ToList());
-        data[i].AddRange(ValueGenerator.GenerateUniformDistributedValues(5000, -0.25, 6.35));
+        data.Add(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), 1024, 0.05, 6.05).ToList());
+        data[i].AddRange(ValueGenerator.GenerateUniformDistributedValues(rand.Next(), 5000, -0.25, 6.35));
       }
 
Index: stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Vladislavleva/VladislavlevaInstanceProvider.cs
===================================================================
--- stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Vladislavleva/VladislavlevaInstanceProvider.cs	(revision 14304)
+++ stable/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Vladislavleva/VladislavlevaInstanceProvider.cs	(revision 14305)
@@ -22,4 +22,5 @@
 using System;
 using System.Collections.Generic;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.Instances.DataAnalysis {
@@ -38,14 +39,22 @@
     }
 
+    public int Seed { get; private set; }
+
+    public VladislavlevaInstanceProvider() : this((int)DateTime.Now.Ticks) { }
+    public VladislavlevaInstanceProvider(int seed) : base() {
+      Seed = seed;
+    }
+
     public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
       List<IDataDescriptor> descriptorList = new List<IDataDescriptor>();
-      descriptorList.Add(new KotanchekFunction());
+      var rand = new MersenneTwister((uint)Seed);
+      descriptorList.Add(new KotanchekFunction(rand.Next()));
       descriptorList.Add(new SalutowiczFunctionOneDimensional());
       descriptorList.Add(new SalutowiczFunctionTwoDimensional());
-      descriptorList.Add(new UnwrappedBallFunctionFiveDimensional());
-      descriptorList.Add(new RationalPolynomialThreeDimensional());
-      descriptorList.Add(new SineCosineFunction());
-      descriptorList.Add(new RippleFunction());
-      descriptorList.Add(new RationalPolynomialTwoDimensional());
+      descriptorList.Add(new UnwrappedBallFunctionFiveDimensional(rand.Next()));
+      descriptorList.Add(new RationalPolynomialThreeDimensional(rand.Next()));
+      descriptorList.Add(new SineCosineFunction(rand.Next()));
+      descriptorList.Add(new RippleFunction(rand.Next()));
+      descriptorList.Add(new RationalPolynomialTwoDimensional(rand.Next()));
       return descriptorList;
     }
