我想在程式里写一个会用到randi函数的for循环
for c=1:Nvar
z = 8-c;
X(sol,c) = randi(z);
end
%或是改写成一行 X(sol,c) = randi(8-c);
但是程式执行却发生错误
我本来以为是randi()函数里面只能放数字 不能放变量
但是我后来发现在程式其他地方
randi()里面放变量却可以顺利执行
我就把 z = 8-c; 放到程式最一开始做宣告
就可以用了
但是后面的程式
for var=1:Nvar
random_number=rand;
if random_number < Cg
X(sol,var)=pX(gBest,var);
elseif random_number< Cp
X(sol,var)=pX(sol,var);
elseif random_number < Cw
continue;
else
X(sol,var)=randi(var);
end
end
原本这里randi()里面是8-var 结果程式错误
我把他试着用var放进去
却可以跑?
但我var也没有特别在程式开始宣告
是在 for var=1:Nvar 才第一次出现
为何这里randi()里面的变量
又不用在程式最前面宣告 就能跑了?
差别在哪里?
我试着改写成这样
把ff宣告在if-else的外面
结果还是不能跑
for var=1:Nvar
random_number=rand;
ff = 8-var;
if random_number < Cg
X(sol,var)=pX(gBest,var);
elseif random_number< Cp
X(sol,var)=pX(sol,var);
1elseif random_number < Cw
continue;
else
X(sol,var)=randi(ff);
end
end
先感谢前辈回答!
前三名推文的id各送100p聊表心意