이 알고리즘이 있지만 많은 if 문을 너무 좋아하지 않습니다.이 알고리즘을 단순화 할 수 있습니까?
이 기능이 더 깨끗한 방식으로 작성 될 수 있는지 누가 알 수 있습니까?
rand('twister',101)
n = 10;
f = A.^(0:n)./factorial(0:n);
f = f/sum(f);
n = 10000;
Xi = 2;
X = zeros(1,n);
for i =1:n,
dXi = (-1)^round(rand);
Yi = Xi + dXi;
if Yi > 0 & Yi <= length(f),
if f(Yi) >= f(Xi),
X(i) = Yi;
Xi = Yi;
else
if rand <= f(Yi)/f(Xi),
X(i) = Yi;
Xi = Yi;
else
X(i) = Xi;
end
end
end
X(i) = Xi;
end
무엇을합니까 해야 할 것? 이미 요구 사항을 고려할 때 가능한 한 간단 할 수 있습니다. –
루프 끝의 X (i) = Xi는 버그처럼 보입니다. 그것이 아니라면 X (i)가 일시적으로 다른 것으로 할당 된 후 사용되지 않는 중첩 된 if에 많은 불필요한 것들이 있습니다. Xi = Yi를 설정하는 if 문 하나를 단순화 할 수 있습니다. –
마지막 X (i) = Xi가 의도됩니다. 그러나 나는 결코 당신을 따르지 않는다. 사용되지 않는 것은 무엇인가? –