随机生成一个0-1矩阵,每行1的出现次数小于等于8,每列1的次数大于等于n_grade;第一列的1:31全部为1,第6列全为1,第16列全为1;第[32:48,1:5]全为0。应该如何修改。

自己写的代码如下

k=1
m=48;
n=16;
m_limit=[8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8;8];
n_grade=[31 4 4 12 4 48 12 4 12 4 12 12 4 4 12 48];
while (k<=50)
    x=round(rand(m,n));
    x([32:48],1)=0;
    x([32:48],[2:5])=0;
    x([1:31],1)=1;
    x([1:48],6)=1;
    x([1:48],16)=1;
    if sum(x)<=8 & sum(x,2)>=[31 4 4 12 4 48 12 4 12 4 12 12 4 4 12 48]
        a=x;
        k=k+1;
    end
end
a
length(find(a==1))


运行结果如图,仅输出k=1,无其他结果

img