[討論] randi() 裡面放變數的問題 (送100P)
我想在程式裡寫一個會用到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聊表心意
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.54.67
※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1459915147.A.084.html
推
04/06 12:14, , 1F
04/06 12:14, 1F
→
04/06 12:14, , 2F
04/06 12:14, 2F
→
04/06 12:22, , 3F
04/06 12:22, 3F
→
04/06 12:30, , 4F
04/06 12:30, 4F
→
04/06 12:31, , 5F
04/06 12:31, 5F
→
04/06 12:32, , 6F
04/06 12:32, 6F
→
04/06 12:33, , 7F
04/06 12:33, 7F
→
04/06 12:33, , 8F
04/06 12:33, 8F
→
04/06 12:33, , 9F
04/06 12:33, 9F
→
04/06 12:34, , 10F
04/06 12:34, 10F
→
04/06 13:23, , 11F
04/06 13:23, 11F
→
04/06 13:23, , 12F
04/06 13:23, 12F
→
04/06 16:07, , 13F
04/06 16:07, 13F
→
04/11 13:27, , 14F
04/11 13:27, 14F
→
04/11 13:28, , 15F
04/11 13:28, 15F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章