Clear Filters
Clear Filters

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

1 view (last 30 days)
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..

Accepted Answer

Jan
Jan on 23 Nov 2017
Edited: Jan on 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));

More Answers (1)

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

Categories

Find more on App Building in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!