private void ModifyEdges(double temperature) { var maxOffset = 2 * (Width + Height) - 4; foreach (var sink in SinkPositions.Keys) { var newPos = IndexToBound(BoundToIndex(SinkPositions[sink]) + (int)((2 * _random.NextDouble() - 1) * maxOffset * temperature)); SinkPositions = SinkPositions.SetItem(sink, newPos); } foreach (var source in SourcePositions.Keys) { var newPos = IndexToBound(BoundToIndex(SourcePositions[source]) + (int)((2 * _random.NextDouble() - 1) * maxOffset * temperature)); SourcePositions = SourcePositions.SetItem(source, newPos); } }