/ / Break-Anweisung führt [duplicate] nicht aus - Matlab

Break-Anweisung führt nicht [duplizieren] - Matlab

Probability = 0.52;
SharePrice = 215;
n = 10000;
count = 0;
count250 = 0;
count200 = 0;

for i = 1:n
CoinToss = rand(1);
if (SharePrice == 200)
break;
end
if (SharePrice == 250)
break;
end
if(Probability < CoinToss)
SharePrice = SharePrice - 0.2;
else
SharePrice = SharePrice + 0.2;
end
end

Der Code scheint nur über die Grenze hinauszugehen, die ich ihm gegeben habe (200 und 250), warum hört es nicht auf?

Antworten:

0 für die Antwort № 1

Willkommen bei Gleitkomma-Ungenauigkeiten; Ihre SharePrice wahrscheinlich addiert sich nicht zu genau 200, so wird es am Ende der SharePrice == 200 Bedingung (und das gleiche gilt für SharePrice == 250).

Du solltest in Betracht ziehen breakaus Ihrer Schleife, wenn SharePrice ist unter 200 oder über 250:

if (SharePrice <= 200)
break
end
if (SharePrice >= 250)
break
end