Effacer les filtres
Effacer les filtres

Dice roll, how to write if statement for not 6 or 1?

1 vue (au cours des 30 derniers jours)
Matthew Lozancich
Matthew Lozancich le 23 Nov 2017
So for rolling dice:
x=randi([1,6],1,2);
How do I write an if statement for the conditions that both dice (x(1) and x(2)) are not a 6 or 1. I did:
if x(1)~=6
if x(1)~=1
if x(2)~=1
if x(2) ~= 1
winnings=winnings+1
end
end
end
end
But this is really ugly..

Réponse acceptée

Jan
Jan le 23 Nov 2017
Modifié(e) : Jan le 23 Nov 2017
if any(x(1) == 2:5) && any(x(2) == 2:5)
winnings = winnings + 1;
end
You can do this in 1 line also:
winnings = winnings + (any(x(1) == 2:5) && any(x(2) == 2:5));
Or
winnings = winnings + all(ismember(x, 2:5));
Or you can use min and max:
winnings = winnings + (min(x) > 1 && max(x) < 6);
A look up table works also:
LUT = [0, 1, 1, 1, 1, 1, 0]; % Elements 1 and 6 are 0
winnings = winnings + all(LUT(x));

Plus de réponses (1)

James Tursa
James Tursa le 23 Nov 2017
Modifié(e) : James Tursa le 23 Nov 2017
E.g.,
if all(ismember(x,2:5))

Catégories

En savoir plus sur App Building 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