Index: /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/FixedValidationBestScaledSymbolicRegressionSolutionAnalyzer.cs
===================================================================
--- /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/FixedValidationBestScaledSymbolicRegressionSolutionAnalyzer.cs	(revision 4243)
+++ /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Analyzers/FixedValidationBestScaledSymbolicRegressionSolutionAnalyzer.cs	(revision 4244)
@@ -256,5 +256,5 @@
       int validationStart = ValidiationSamplesStart.Value;
       int validationEnd = ValidationSamplesEnd.Value;
-      uint seed = (uint)Random.Next();
+      int seed = Random.Next();
       int count = (int)((validationEnd - validationStart) * RelativeNumberOfEvaluatedSamples.Value);
       if (count == 0) count = 1;
Index: /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Evaluators/MultiObjectiveSymbolicRegressionEvaluator.cs
===================================================================
--- /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Evaluators/MultiObjectiveSymbolicRegressionEvaluator.cs	(revision 4243)
+++ /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Evaluators/MultiObjectiveSymbolicRegressionEvaluator.cs	(revision 4244)
@@ -121,5 +121,5 @@
 
     public override IOperation Apply() {
-      uint seed = (uint)Random.Next();
+      int seed = Random.Next();
       IEnumerable<int> rows = SingleObjectiveSymbolicRegressionEvaluator.GenerateRowsToEvaluate(seed, RelativeNumberOfEvaluatedSamples.Value, SamplesStart.Value, SamplesEnd.Value);
       double[] qualities = Evaluate(SymbolicExpressionTreeInterpreter, SymbolicExpressionTree, RegressionProblemData.Dataset,
Index: /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Evaluators/SingleObjectiveSymbolicRegressionEvaluator.cs
===================================================================
--- /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Evaluators/SingleObjectiveSymbolicRegressionEvaluator.cs	(revision 4243)
+++ /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis.Regression/3.3/Symbolic/Evaluators/SingleObjectiveSymbolicRegressionEvaluator.cs	(revision 4244)
@@ -139,5 +139,5 @@
 
     public override IOperation Apply() {
-      uint seed = (uint)Random.Next();
+      int seed = Random.Next();
       IEnumerable<int> rows = GenerateRowsToEvaluate(seed, RelativeNumberOfEvaluatedSamples.Value, SamplesStart.Value, SamplesEnd.Value);
       double quality = Evaluate(SymbolicExpressionTreeInterpreter, SymbolicExpressionTree, LowerEstimationLimit.Value, UpperEstimationLimit.Value,
@@ -149,5 +149,5 @@
 
 
-    internal static IEnumerable<int> GenerateRowsToEvaluate(uint seed, double relativeAmount, int start, int end) {
+    internal static IEnumerable<int> GenerateRowsToEvaluate(int seed, double relativeAmount, int start, int end) {
       if (end < start) throw new ArgumentException("Start value is larger than end value.");
       int count = (int)((end - start) * relativeAmount);
Index: /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis/3.3/RandomEnumerable.cs
===================================================================
--- /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis/3.3/RandomEnumerable.cs	(revision 4243)
+++ /branches/DataAnalysis/HeuristicLab.Problems.DataAnalysis/3.3/RandomEnumerable.cs	(revision 4244)
@@ -27,13 +27,9 @@
   public class RandomEnumerable {
     public static IEnumerable<int> SampleRandomNumbers(int maxElement, int count) {
-      return SampleRandomNumbers(((uint)DateTime.Now.Ticks), 0, maxElement, count);
+      return SampleRandomNumbers(Environment.TickCount, 0, maxElement, count);
     }
 
     public static IEnumerable<int> SampleRandomNumbers(int start, int end, int count) {
-      return SampleRandomNumbers(((uint)DateTime.Now.Ticks), start, end, count);
-    }
-
-    public static IEnumerable<int> SampleRandomNumbers(uint seed, int maxElement, int count) {
-      return SampleRandomNumbers(seed, 0, maxElement, count);
+      return SampleRandomNumbers(Environment.TickCount, start, end, count);
     }
 
@@ -41,7 +37,7 @@
     //IMPORTANT because IEnumerables with yield are used the seed must best be specified to return always 
     //the same sequence of numbers without caching the values.
-    public static IEnumerable<int> SampleRandomNumbers(uint seed, int start, int end, int count) {
+    public static IEnumerable<int> SampleRandomNumbers(int seed, int start, int end, int count) {
       int remaining = end - start;
-      var mt = new MersenneTwister(seed);
+      var mt = new FastRandom(seed);
       for (int i = start; i < end && count > 0; i++) {
         double probability = mt.NextDouble();
