Filter löschen
Filter löschen

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

1 Ansicht (letzte 30 Tage)
Matthew Lozancich
Matthew Lozancich am 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..

Akzeptierte Antwort

Jan
Jan am 23 Nov. 2017
Bearbeitet: Jan am 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));

Weitere Antworten (1)

James Tursa
James Tursa am 23 Nov. 2017
Bearbeitet: James Tursa am 23 Nov. 2017
E.g.,
if all(ismember(x,2:5))

Kategorien

Mehr zu App Building finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by