这是我到目前为止所做的,但我不知道如何继续。请帮助!
function Yatzi(np)
if nargin == 0
np=1;
elseif ~(np>0 && real(np) && numel(np)==1)
error('Invalid input for number of players.')
end
% set up initial points array
points = ones(13,np)*NaN;
% roll variable
roll = zeros(1,5);
% initialize our rerolls variable
rerolls = 1:5;
for t = 1:3
% throw the dice
roll(rerolls) = randi(6,[1 length(rerolls)]);
end
end
答案 0 :(得分:0)
首先,您可以使用大小为5 x np
的矩阵,这样您就可以将所有内容存储在一起。您不必使用for
循环:
% throw the dice
roll(rerolls) = randi(6,[5 length(rerolls)]);
然后扫描矩阵的每一列,并为您要查找的每个结果计算一个计数值。最后,您将使用总滚数除以获得概率。
要检查每个结果,您可以拥有多个if
条款。为了使其更具可读性,您可以实现一个函数,例如checkForYahzee(result)
,其结果将是您的滚动列roll(:,i)
每个函数都可以检查不同的东西,例如:
if( result(1) == result(2) &&
result(2) == result(3) &&
result(3) == result(4) &&
result(4) == result(5) )
% yahtzee!
end
你可以找到更聪明的方法来保存比较等等。