如何在matlab中以0.5的混合比生成数字1和0?

时间:2016-01-23 15:01:42

标签: matlab genetic-algorithm

Uniform Crossover在两个父母之间使用固定的mixing ratio。 与one- and two-point crossover不同,Uniform Crossover使父染色体能够贡献基因水平而不是细分水平。 如果混合比为0.5,则后代大约有一半的基因来自第一个父母,另一半来自第二个父母。所以我需要生成像

这样的面具

mask1: 0 1 1 0 0 0 1 1 0 1 0

mask2: 1 0 0 1 1 1 0 0 1 0 1

这里的混合比为0.5 。所以我需要使用0.5的混合比率生成0和1。

我在matlab中尝试过这样的事情:

 mask1=round(rand(1,IndLength));//IndLength=10 suppose
 mask2=not(mask1);

并且它没有给出0和1的混合比率始终为0.5。是否有任何方法可以生成0.5matlab的混合比例的随机数/ p>

1 个答案:

答案 0 :(得分:3)

随机置换1和IndLength之间的数字,然后将每个数字高于IndLength / 2作为1

randperm(IndLength)>IndLength/2

对于奇数,此解决方案总是会有一个额外的0