我用matlab写了一个模拟生成随机向量(所有元素均为0或1)的代码。
我想在代码里进行控制,若发现某个随机行向量的所有元素全是0,就重新模拟一次。
代码如下:
out1=zeros(I,K); %矩阵初值为全零
suiji_0=rand(I,K); % 生成一个随机数矩阵
% 如果随机数矩阵里第i行第k列的元素大于0.5,就把该元素设为1
for i=1:I
for k=1:K
if suiji_0(i,k)> 0.5
out1(i,k)=1;
end
end
kongzhi=sum(out1(i,:)); % 将该行向量的各元素相加,由此看它是否为全零向量
if kongzhi==0
i=i-1; % 如果发现属性向量是全零向量,就重新模拟一次
end
end
xlswrite('item_moni.xls',out1,'q_matrix');
可是,运行完程序以后,发现仍然有全零的行向量出现。这个是怎么回事啊?
谢谢了!
|
|