Index: trunk/sources/HeuristicLab.DataPreprocessing/3.4/Implementations/ManipulationContent.cs
===================================================================
--- trunk/sources/HeuristicLab.DataPreprocessing/3.4/Implementations/ManipulationContent.cs	(revision 11367)
+++ trunk/sources/HeuristicLab.DataPreprocessing/3.4/Implementations/ManipulationContent.cs	(revision 11380)
@@ -41,8 +41,8 @@
     }
 
-    public ManipulationContent(IManipulationLogic theManipulationLogic, ISearchLogic theSearchLogic, IFilterLogic theFitlerLogic) {
+    public ManipulationContent(IManipulationLogic theManipulationLogic, ISearchLogic theSearchLogic, IFilterLogic theFilterLogic) {
       manipulationLogic = theManipulationLogic;
       searchLogic = theSearchLogic;
-      filterLogic = theFitlerLogic;
+      filterLogic = theFilterLogic;
     }
 
Index: trunk/sources/HeuristicLab.DataPreprocessing/3.4/Implementations/ManipulationLogic.cs
===================================================================
--- trunk/sources/HeuristicLab.DataPreprocessing/3.4/Implementations/ManipulationLogic.cs	(revision 11367)
+++ trunk/sources/HeuristicLab.DataPreprocessing/3.4/Implementations/ManipulationLogic.cs	(revision 11380)
@@ -225,29 +225,35 @@
     }
 
-    public void ShuffleWithRanges() {
-      ShuffleWithRanges(new[] {
-        preprocessingData.TestPartition,
-        preprocessingData.TrainingPartition
-      });
-    }
-
-    public void ShuffleWithRanges(IEnumerable<IntRange> ranges) {
+    public void ShuffleWithRanges(bool shuffleRangesSeparately) {
+      var ranges = new[] { preprocessingData.TestPartition, preprocessingData.TrainingPartition };
+      ShuffleWithRanges(ranges, shuffleRangesSeparately);
+    }
+
+    public void ShuffleWithRanges(IEnumerable<IntRange> ranges, bool shuffleRangesSeparately) {
       // init random outside loop
       Random random = new Random();
 
-      preprocessingData.InTransaction(() => {
-        // process all given ranges - e.g. TrainingPartition, TestPartition
-        foreach (IntRange range in ranges) {
-          List<Tuple<int, int>> shuffledIndices = new List<Tuple<int, int>>();
-
-          // generate random indices used for shuffeling each column
-          for (int i = range.End - 1; i >= range.Start; --i) {
-            int rand = random.Next(range.Start, i);
-            shuffledIndices.Add(new Tuple<int, int>(i, rand));
-          }
-
-          ShuffleToIndices(shuffledIndices);
-        }
-      });
+      if (shuffleRangesSeparately) {
+        preprocessingData.InTransaction(() => {
+          // process all given ranges - e.g. TrainingPartition, TestPartition
+          foreach (IntRange range in ranges) {
+            List<Tuple<int, int>> shuffledIndices = new List<Tuple<int, int>>();
+
+            // generate random indices used for shuffeling each column
+            for (int i = range.End - 1; i >= range.Start; --i) {
+              int rand = random.Next(range.Start, i);
+              shuffledIndices.Add(new Tuple<int, int>(i, rand));
+            }
+
+            ShuffleToIndices(shuffledIndices);
+          }
+        });
+      } else {
+        preprocessingData.InTransaction(() => {
+          var indices = ranges.SelectMany(x => Enumerable.Range(x.Start, x.Size)).ToList();
+          var shuffledIndices = indices.OrderBy(x => random.Next());
+          ShuffleToIndices(indices.Zip(shuffledIndices, (i, j) => new Tuple<int, int>(i, j)).ToList());
+        });
+      }
     }
 
Index: trunk/sources/HeuristicLab.DataPreprocessing/3.4/Interfaces/IManipulationLogic.cs
===================================================================
--- trunk/sources/HeuristicLab.DataPreprocessing/3.4/Interfaces/IManipulationLogic.cs	(revision 11367)
+++ trunk/sources/HeuristicLab.DataPreprocessing/3.4/Interfaces/IManipulationLogic.cs	(revision 11380)
@@ -38,6 +38,6 @@
     void ReplaceIndicesByValue(IDictionary<int, IList<int>> cells, string value);
     void ReplaceIndicesByValue<T>(int columnIndex, IEnumerable<int> rowIndices, T value);
-    void ShuffleWithRanges();
-    void ShuffleWithRanges(IEnumerable<HeuristicLab.Data.IntRange> ranges);
+    void ShuffleWithRanges(bool shuffleRangesSeparately);
+    void ShuffleWithRanges(IEnumerable<HeuristicLab.Data.IntRange> ranges, bool shuffleRangesSeparately);
     List<int> RowsWithMissingValuesGreater(double percent);
     List<int> ColumnsWithMissingValuesGreater(double percent);
