0

我想通过概率值更改变量,例如我在 matlab 中有 [ 0 0 1 1 1 1 0 1 ] 并且概率 = 0.01更改它的任何元素,我如何在 matlab 中实现这一点?(我想在 GA 中使用它,并且 p = 0.01 做染色体基因的突变)感谢任何帮助

4

2 回答 2

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);
于 2012-11-06T18:59:31.787 回答
1

您的代码的相关条件是

if rand() < probability
   % Flip your bit here, e.g. 
   % bitToFlip = randi(length(genome));
   % genome(bitToFlip) = 1 - genome(bitToFlip);
end

这将以if完全 的概率运行语句内的代码probability

于 2012-11-06T19:00:43.860 回答