Yatzi是一款掷5个骰子的游戏。我的函数Yatzi模拟掷骰子5个骰子。该函数应采用一个输入 N umR olls,即掷出 5 个骰子的总次数。该函数应具有四个输出,按顺序给出以下场景的相对频率(概率):
- 显示数字 1、2、3、4 和 5 的 5 个骰子 两个,
- 只有两个,骰子
- 显示数字 2 至少两个骰子显示数字 4
- 所有 5 个骰子显示相同的数字
这就是我目前所拥有的,但我不知道如何进行。 请帮忙!
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
你可以有一个大小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
您可以找到更聪明的方法来保存比较等