Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 为Yahtzee游戏模拟5个骰子掷骰_Matlab_Random_Dice - Fatal编程技术网

Matlab 为Yahtzee游戏模拟5个骰子掷骰

Matlab 为Yahtzee游戏模拟5个骰子掷骰,matlab,random,dice,Matlab,Random,Dice,我试图为我在MATLAB中编写的Yahtzee游戏模拟掷5个骰子,但我遇到了一个问题,即我的代码在运行1000多次迭代后似乎没有生成任何Yahtzee。我使用的函数是否可以保证相同数量的Yahtzee5被滚动 while rounds<=13 fprintf('Rolling the dice...\n'); roll=randi(6,1,5); roll=sort(roll); fprintf('You rolled:'); disp(roll);

我试图为我在MATLAB中编写的Yahtzee游戏模拟掷5个骰子,但我遇到了一个问题,即我的代码在运行1000多次迭代后似乎没有生成任何Yahtzee。我使用的函数是否可以保证相同数量的Yahtzee5被滚动

while rounds<=13
    fprintf('Rolling the dice...\n');
    roll=randi(6,1,5);
    roll=sort(roll);
    fprintf('You rolled:');
    disp(roll);
    rollCount=rollCount+1;

    for x=rule
        if roll==rule{1};
            fprintf('Condition Met');
            break;
        end
    end
    rounds=rounds+1;

end

这基本上只是迭代13轮滚动,并根据规则{1}检查滚动,规则{1}是一个包含[1]的数组。获得3,有时4 1似乎没有问题,但我得不到5。有什么建议吗

正如Ryan Cavanaugh指出的那样,没有足够的样本来获取想要的结果。我将模拟提高到运行10000次,并按预期运行

6^5是7776。您不应该期望在1000次迭代中经常出现[1]结果。Doh。我想你是对的。我不认为这是一个很低的概率。我将其更改为10000次迭代,我可以看到它在获得正确的序列后停止。谢谢你的帮助。你的代码中也有一个缺陷。你说如果roll==rule{1},但它必须是,如果roll==x{1}。嗯,如果我把它改成你所建议的,我会得到一个误差矩阵维度必须一致。规则是一个数组,roll是一个5位数的数组。for循环试图做的是逐步遍历规则中的每个数组,看看roll是否匹配它。你能修复整个块,使它像那样工作吗?我不确定我的代码是否会这样做。目前,您的代码会根据规则{1}反复检查您的滚动,而不是根据每个规则进行检查。如果您发现它抱怨矩阵维度,那么您应该检查是否所有规则都使用了正确的维度输入-也就是说,您没有插入一些作为行向量,一些作为列向量。同样值得检查的是,您是否需要花括号-如果roll==x,则可能只需要花括号。我使用倍频程,它需要花括号索引,但我不知道Matlab是否需要。这里的示例代码只是为了检查并确保滚动是随机的,并且逻辑用于检查规则。在最终结果中,它将检查所有规则。你能解释一下我会怎么做吗?如何根据规则中的每个数组检查我的掷骰数组?在C++中,它会是类似于:FrITN i=0;ifor x=1:5 if roll==规则{x}应该这样做,假设规则看起来像{[1 1 1 1],[2 2 2]…},但是只检查ifroll1==meanroll会更容易,因为它只检查所有5个卷是否相同,而不管它们的值如何,所以不需要循环