Dice roll, how to write if statement for not 6 or 1?
2 views (last 30 days)
Show older comments
Matthew Lozancich
on 23 Nov 2017
Commented: Matthew Lozancich
on 24 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..
0 Comments
Accepted Answer
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
on 23 Nov 2017
Edited: James Tursa
on 23 Nov 2017
E.g.,
if all(ismember(x,2:5))
0 Comments
See Also
Categories
Find more on Image Data 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!