Free考研资料

标题: 关于随机向量的模拟问题,怎样避免全零的行向量出现? [打印本页]

作者: 笔为剑    时间: 14-1-12 10:46
标题: 关于随机向量的模拟问题,怎样避免全零的行向量出现?

我用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');

可是,运行完程序以后,发现仍然有全零的行向量出现。这个是怎么回事啊?
谢谢了!


作者: emanon429    时间: 14-1-12 17:36
i=i-1; % 如果发现属性向量是全零向量,就重新模拟一次

这样是不行的

比如这个程序:
for i=1:1:10
i
i=i-100;
end

不管你在循环内部怎么改变i,这个循环还是执行10次。




欢迎光临 Free考研资料 (http://test.freekaoyan.com/) Powered by Discuz! X3.2