我想按概率值更改变量, 作为一个例子,我在matlab中有[0 0 1 1 1 1 0 1]并且概率= 0.01 改变它的任何元素,我怎样才能在matlab中实现这一点? (我想在GA中使用它,并且p = 0.01做choromosome Gen的突变) 感谢任何帮助
答案 0 :(得分:4)
首先,确定您想要更改的所有元素
array = [0 0 1 1 1 1 0 1];
sizArray = size(array);
probability = 0.01;
toChangeIdx = rand(sizArray) < probability;
然后,您可以在需要的地方翻转零和
array(toChangeIdx) = 1-array(toChangeIdx);
答案 1 :(得分:1)
您的代码的相关条件是
if rand() < probability
% Flip your bit here, e.g.
% bitToFlip = randi(length(genome));
% genome(bitToFlip) = 1 - genome(bitToFlip);
end
这将运行if
语句中的代码,概率恰好为probability
。