private List <DifferentialCharacteristic> GetPermutatedOutcomes(List <DifferentialCharacteristic> characteristics) { List <DifferentialCharacteristic> permutatedOutcomes = new List <DifferentialCharacteristic>(); foreach (DifferentialCharacteristic characteristic in characteristics) { int output = Permutation.Permutate(characteristic.OutputDifference); DifferentialCharacteristic newCharacteristic = new DifferentialCharacteristic(characteristic.InputDifference, output, characteristic.Probability); newCharacteristic.AddIntermediateOutputs(characteristic.IntermediateOutputs); newCharacteristic.AddUsedSubstitionBoxes(characteristic.UsedSubstitutionBoxes); permutatedOutcomes.Add(newCharacteristic); } return(permutatedOutcomes); }