My error or program error?

4 vues (au cours des 30 derniers jours)
Doctor Evil
Doctor Evil le 27 Déc 2015
Commenté : Walter Roberson le 27 Déc 2015
I'm having trouble (in Matlab) with the following problem:
there are 6 racers in a race. In vectors t1-t6 are previous times for each of the 6 racers (in this case, there are only 3 previous times for each of the racers).
t1=[30.01; 30.42; 30.68], t2=[30.00; 30.31; 30.55], t3=[29.98; 30.54; 30.32], t4=[28.89; 31.15; 30.44], t5=[29.66; 30.08; 31.25], t6=[28.72; 29.96; 31.18]
I want to calculate the probability of each racer to win the race. For example, if first racer wins, he has to do it with either his first time (probability 1/3), second or third with the condition that all other racers have bigger times than him. This group of commands should do that.
p=[0 0 0 0 0 0];
for i=min(t1):0.01:max(t1)
p(1)=p(1)+ sum((t1==i))/numel(t1) * sum((t2>i))/numel(t2)* sum((t3>i))/numel(t3)* sum((t4>i))/numel(t4)* sum((t5>i))/numel(t5)* sum((t6>i))/numel(t6);
end
for i=min(t2):0.01:max(t2)
p(2)=p(2)+ sum((t2==i))/numel(t2) * sum((t1>i))/numel(t1)* sum((t3>i))/numel(t3)* sum((t4>i))/numel(t4)* sum((t5>i))/numel(t5)* sum((t6>i))/numel(t6);
end
for i=min(t3):0.01:max(t3)
p(3)=p(3)+ sum((t3==i))/numel(t3) * sum((t2>i))/numel(t2)* sum((t1>i))/numel(t1)* sum((t4>i))/numel(t4)* sum((t5>i))/numel(t5)* sum((t6>i))/numel(t6);
end
for i=min(t4):0.01:max(t4)
p(4)=p(4)+ sum((t4==i))/numel(t4) * sum((t2>i))/numel(t2)* sum((t3>i))/numel(t3)* sum((t1>i))/numel(t1)* sum((t5>i))/numel(t5)* sum((t6>i))/numel(t6);
end
for i=min(t5):0.01:max(t5)
p(5)=p(5)+ sum((t5==i))/numel(t5) * sum((t2>i))/numel(t2)* sum((t3>i))/numel(t3)* sum((t4>i))/numel(t4)* sum((t1>i))/numel(t1)* sum((t6>i))/numel(t6);
end
for i=min(t6):0.01:max(t6)
p(6)=p(6)+ sum((t6==i))/numel(t6) * sum((t2>i))/numel(t2)* sum((t3>i))/numel(t3)* sum((t4>i))/numel(t4)* sum((t5>i))/numel(t5)* sum((t1>i))/numel(t1);
end
what i get is
p =
0.0247 0.0439 0.0562 0.2236 0.1481 0.3333
i've done the calculation manually and probability for fifth racer to win should be 0.1701 and sixth 0.4815. what i don't get is why the probabilities for the first four racers are correct, but the probability for 5th and 6th aren't? The logic is the same for all the racers. Can someone please explain what's wrong?

Réponse acceptée

Walter Roberson
Walter Roberson le 27 Déc 2015

Plus de réponses (1)

Doctor Evil
Doctor Evil le 27 Déc 2015
Thanks! So, to compare equality between a and b I just have to do something like this:
if abs(a-b)<=0.00001 % or something really small, then they're equal
And if I want to see if a is greater than b:
if abs(a-b)>=0.00001 % meaning they're not equal
if a>b % then a really is bigger
else % it's not bigger
else % they're equal
Would this work?
  1 commentaire
Walter Roberson
Walter Roberson le 27 Déc 2015
That should work.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by