我想在程式裡寫一個會用到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聊表心意