필터 지우기
필터 지우기

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

조회 수: 1 (최근 30일)
Matthew Lozancich
Matthew Lozancich 2017년 11월 23일
댓글: Matthew Lozancich 2017년 11월 24일
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..

채택된 답변

Jan
Jan 2017년 11월 23일
편집: Jan 2017년 11월 23일
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));

추가 답변 (1개)

James Tursa
James Tursa 2017년 11월 23일
편집: James Tursa 2017년 11월 23일
E.g.,
if all(ismember(x,2:5))

카테고리

Help CenterFile Exchange에서 App Building에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by