Index: branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Creators/UniformRandomVariableVectorCreator.cs
===================================================================
--- branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Creators/UniformRandomVariableVectorCreator.cs	(revision 9411)
+++ branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Creators/UniformRandomVariableVectorCreator.cs	(revision 9467)
@@ -22,4 +22,6 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Parameters;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
@@ -30,4 +32,7 @@
 
     #region Parameter Properties
+    public ILookupParameter<PercentValue> ChangeSymbolProbabilityParameter {
+      get { return (ILookupParameter<PercentValue>)Parameters["ChangeSymbolProbability"]; }
+    }
     #endregion
 
@@ -39,4 +44,5 @@
     public UniformRandomVariableVectorCreator()
       : base() {
+        Parameters.Add(new LookupParameter<PercentValue>("ChangeSymbolProbability"));
     }
     public override IDeepCloneable Clone(Cloner cloner) {
@@ -46,5 +52,5 @@
     protected override VariableVector Create(IRandom random, VariableVector sampleVariableVector, double spreadPercentage) {
       var result = sampleVariableVector.GetEmptyCopy();
-      result.Randomize(random, spreadPercentage);
+      result.Randomize(random, ChangeSymbolProbabilityParameter.ActualValue.Value, spreadPercentage);
       return result;
     }
Index: branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Variable/DoubleVariable.cs
===================================================================
--- branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Variable/DoubleVariable.cs	(revision 9411)
+++ branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Variable/DoubleVariable.cs	(revision 9467)
@@ -112,11 +112,11 @@
     }
 
-    // Important! If this mehtod is called instead of the more concrete "Randomize(IRandom random, double spreadPercentage)"
-    // spread percentage is 50%
-    public override void Randomize(IRandom random) {
-      Randomize(random, 50);
+    // this method is not implemented on purpose, because it may lead to confusion or errors if the wrong parameter would be used (changeSymbolProbability instead of spreadPercentage)
+    public override void Randomize(IRandom random, double changeSymbolProbability) {
+      throw new NotImplementedException("The method DoubleVariable.Randomize(IRandom, double) should not be used. Use DoubleVariable.Randomize(IRandom, double, double) instead.");
     }
 
-    public void Randomize(IRandom random, double spreadPercentage) {
+    // changeSymbolProbability is not used on purpose
+    public void Randomize(IRandom random, double changeSymbolProbability, double spreadPercentage) {
       if (spreadPercentage < 0 || spreadPercentage > 100) {
         throw new ArgumentException("Spread percentage has to be between 0 and 100.");
Index: branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Variable/IActionVariable.cs
===================================================================
--- branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Variable/IActionVariable.cs	(revision 9411)
+++ branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Variable/IActionVariable.cs	(revision 9467)
@@ -21,4 +21,5 @@
 
 using System.Collections.Generic;
+using HeuristicLab.Core;
 
 namespace HeuristicLab.Encodings.VariableVector {
@@ -30,4 +31,6 @@
     void SetTo(string value);
     IEnumerable<string> GetAllPossibleActions();
+
+    void RandomizeAction(IRandom random);
   }
 }
Index: branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Variable/IVariable.cs
===================================================================
--- branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Variable/IVariable.cs	(revision 9411)
+++ branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Variable/IVariable.cs	(revision 9467)
@@ -33,5 +33,5 @@
     IVariable GetSetCopy();
 
-    void Randomize(IRandom random);
+    void Randomize(IRandom random, double changeSymbolProbability);
     bool MatchInput(string target);
     bool MatchVariable(IVariable target);
Index: branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Variable/IntVariable.cs
===================================================================
--- branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Variable/IntVariable.cs	(revision 9411)
+++ branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Variable/IntVariable.cs	(revision 9467)
@@ -122,5 +122,11 @@
     }
 
-    public override void Randomize(IRandom random) {
+    public void RandomizeAction(IRandom random) {
+      int index = random.Next(possibleFeatures.Count());
+      currentValue = possibleFeatures.ElementAt(index);
+    }
+
+    public override void Randomize(IRandom random, double changeSymbolProbability) {
+      Wildcard = random.NextDouble() < changeSymbolProbability;
       int index = random.Next(possibleFeatures.Count());
       currentValue = possibleFeatures.ElementAt(index);
Index: branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Variable/StringVariable.cs
===================================================================
--- branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Variable/StringVariable.cs	(revision 9411)
+++ branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Variable/StringVariable.cs	(revision 9467)
@@ -167,5 +167,11 @@
     }
 
-    public override void Randomize(IRandom random) {
+    public void RandomizeAction(IRandom random) {
+      int index = random.Next(possibleFeatures.Count());
+      currentValue = possibleFeatures.ElementAt(index);
+    }
+
+    public override void Randomize(IRandom random, double changeSymbolProbability) {
+      Wildcard = random.NextDouble() < changeSymbolProbability;
       int index = random.Next(possibleFeatures.Count());
       currentValue = possibleFeatures.ElementAt(index);
Index: branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Variable/Variable.cs
===================================================================
--- branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Variable/Variable.cs	(revision 9411)
+++ branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/Variable/Variable.cs	(revision 9467)
@@ -55,5 +55,5 @@
     public abstract IVariable GetSetCopy();
 
-    public abstract void Randomize(IRandom random);
+    public abstract void Randomize(IRandom random, double changeSymbolProbability);
 
     public virtual bool MatchVariable(IVariable target) { throw new NotSupportedException("This method is not supported by this kind of Variable."); }
Index: branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/VariableVector.cs
===================================================================
--- branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/VariableVector.cs	(revision 9411)
+++ branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/VariableVector.cs	(revision 9467)
@@ -86,6 +86,6 @@
     }
 
-    public void Randomize(IRandom random, double spreadPercentage) {
-      condition.Randomize(random, spreadPercentage);
+    public void Randomize(IRandom random, double changeSymbolProbability, double spreadPercentage) {
+      condition.Randomize(random, changeSymbolProbability, spreadPercentage);
       action.Randomize(random);
     }
Index: branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/VariableVectorAction.cs
===================================================================
--- branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/VariableVectorAction.cs	(revision 9411)
+++ branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/VariableVectorAction.cs	(revision 9467)
@@ -113,5 +113,5 @@
     public void Randomize(IRandom random) {
       foreach (var variable in VariableDictionary.Values) {
-        variable.Randomize(random);
+        variable.RandomizeAction(random);
       }
     }
Index: branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/VariableVectorCondition.cs
===================================================================
--- branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/VariableVectorCondition.cs	(revision 9411)
+++ branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/VariableVectorCondition.cs	(revision 9467)
@@ -97,10 +97,10 @@
     }
 
-    public void Randomize(IRandom random, double spreadPercentage) {
+    public void Randomize(IRandom random, double changeSymbolProbability, double spreadPercentage) {
       foreach (var variable in VariableDictionary.Values) {
         if (variable is DoubleVariable) {
-          ((DoubleVariable)variable).Randomize(random, spreadPercentage);
+          ((DoubleVariable)variable).Randomize(random, changeSymbolProbability, spreadPercentage);
         } else {
-          variable.Randomize(random);
+          variable.Randomize(random, changeSymbolProbability);
         }
       }
