diff --git a/java/source/infodynamics/measures/continuous/MutualInfoMultiVariateCommon.java b/java/source/infodynamics/measures/continuous/MutualInfoMultiVariateCommon.java index fa10249..c726114 100755 --- a/java/source/infodynamics/measures/continuous/MutualInfoMultiVariateCommon.java +++ b/java/source/infodynamics/measures/continuous/MutualInfoMultiVariateCommon.java @@ -684,7 +684,7 @@ public abstract class MutualInfoMultiVariateCommon implements // (Not necessary to check for distinct random perturbations) int[][] newOrderings = new int[numSurrogatesToCheck][sourceObservations.length]; - if (surrogate_type.equalsIgnoreCase(PROP_SHUFFLE)){ + if (surrogate_type.equalsIgnoreCase(PROP_ROTATE)){ newOrderings = rg.generateRotatedSurrogates(sourceObservations.length, numSurrogatesToCheck, dynCorrExclTime); } else { newOrderings = rg.generateRandomPerturbations(sourceObservations.length, numSurrogatesToCheck); diff --git a/java/source/infodynamics/utils/RandomGenerator.java b/java/source/infodynamics/utils/RandomGenerator.java index b18153a..6da6eab 100755 --- a/java/source/infodynamics/utils/RandomGenerator.java +++ b/java/source/infodynamics/utils/RandomGenerator.java @@ -680,12 +680,14 @@ public class RandomGenerator { list.add(i); } for (int s = 0; s < numberOfRotations; s++) { + // Create a copy of the original list of indices + ArrayList rotatedList = new ArrayList(list); // Perform linear time rotations - // Note: the rotations are all equal likelihood, no exclusion window for autocorrelation time + // ignore rotations that are -+ dynCorrExclTime int rotationAmount = random.nextInt(n - 2 * dynCorrExclTime) + dynCorrExclTime; - Collections.rotate(list, rotationAmount); + Collections.rotate(rotatedList, rotationAmount); for (int j = 0; j < n; j++) { - sets[s][j] = list.get(j); + sets[s][j] = rotatedList.get(j); } } return sets;