如何在matlab中生成混合比为0.5的数字1和0?
How to generate number 1 and 0 with mixing ratio 0.5 in matlab?
Uniform Crossover
在两个 parent 之间使用固定的 mixing ratio
。
与 one- and two-point crossover
不同,Uniform Crossover
使 parent 染色体能够贡献基因水平而不是片段水平。
如果混合比是 0.5
,后代大约有一半来自第一个 parent 的基因,另一半来自第二个 parent.So 我需要生成像
这样的掩码
掩码 1: 0 1 1 0 0 0 1 1 0 1 0
掩码 2: 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.5 的 0 和 1 所有 time.Is 有什么办法可以在 matlab
中生成混合比为 0.5
的随机数? ?
随机排列1到IndLength之间的数,然后把IndLength/2以上的每一个数都当成1
randperm(IndLength)>IndLength/2
对于奇数,这个解总会有一个额外的0
Uniform Crossover
在两个 parent 之间使用固定的 mixing ratio
。
与 one- and two-point crossover
不同,Uniform Crossover
使 parent 染色体能够贡献基因水平而不是片段水平。
如果混合比是 0.5
,后代大约有一半来自第一个 parent 的基因,另一半来自第二个 parent.So 我需要生成像
掩码 1: 0 1 1 0 0 0 1 1 0 1 0
掩码 2: 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.5 的 0 和 1 所有 time.Is 有什么办法可以在 matlab
中生成混合比为 0.5
的随机数? ?
随机排列1到IndLength之间的数,然后把IndLength/2以上的每一个数都当成1
randperm(IndLength)>IndLength/2
对于奇数,这个解总会有一个额外的0