-1

Yatzi は 5 つのサイコロを振って行うゲームです。私の関数 Yatzi は、5 つのサイコロの転がりをシミュレートします。この関数は、5 つのサイコロが振られる合計回数 N umR olls という 1 つの入力を受け取る必要があります。関数には、次のシナリオの相対頻度 (確率) を順番に与える 4 つの出力が必要です。

  • 1、2、3、4、5 の数字を示す 5 つのサイコロ
  • 2つ、そして2つだけ、サイコロ
  • 数字の 2 を示す 数字の 4 を示す少なくとも 2 つのサイコロ
  • 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
4

1 に答える 1

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

比較などを保存するためのより賢い方法を見つけることができます

于 2012-11-21T16:25:45.577 に答える