在MATLAB总结骰子(Summing up Dice in MATLAB)

2019-07-04 01:05发布

我叫RollDice功能模拟的六个骰子给定数量的给定次数的滚动。 该函数有两个输入参数,这将在每个实验中且使骰子将被轧制的总次数(NumRolls)被卷起骰子(NumDice)的数量。 该函数的输出将是包含在每个实验中骰子值的总和长度NumRolls的向量SumDice。

这是我的代码现在:我怎么解释骰子的总和? 谢谢!

function SumDice= RollDice(NumDice,NumRolls)

FACES= 6;               
maxOut= FACES*NumDice;         
count= zeros(1,maxOut);  


for i = 1:NumRolls

    outcome= 0;  
    for k= 1:NumDice
        outcome= outcome + ceil(ranNumDice(1)*FACES);
    end

    count(outcome)= count(outcome) + 1;
end


bar(NumDice:maxOut, count(NumDice:length(count)));
message= sprintf('% NumDice rolls of % NumDice fair dice',  NumRolls, NumDice);
title(message);
xlabel('sum of dice values');  ylabel('Count');

Answer 1:

这是一个简单而整洁的小问题(+1),我很喜欢看进去:-)

有相当在那里我觉得我可以改善你的函数的几个领域。 而不是通过他们去一个一个,我想我只是重新写我怎么会做它的功能,我们可以从那里。 我写它作为一个剧本,但它可以变成很轻松地功能。 最后,我还通过允许骰子具有任何数目的面(6或其他)的广义它一下。 所以,在这里,它是:

%#Define the parameters
NumDice = 2;
NumFace = 6;
NumRoll = 50;

%#Generate the rolls and obtain the sum of the rolls
AllRoll = randi(NumFace, NumRoll, NumDice);
SumRoll = sum(AllRoll, 2);

%#Determine the bins for the histogram
Bins = (NumDice:NumFace * NumDice)';

%#Build the histogram
hist(SumRoll, Bins);
title(sprintf('Histogram generated from %d rolls of %d %d-sided dice', NumRoll, NumDice, NumFace));
xlabel(sprintf('Sum of %d dice', NumDice));
ylabel('Count');

我建议你在我的代码仔细看和我使用的每个函数的文档。 在未来解决在Matlab其他问题时,运动可能证明对您有用。 一旦你这样做了,如果有什么你不明白,那么请让我知道在评论,我会尽力帮助。 干杯!

ps的,如果你不以往任何时候都需要再次提及的各个轧辊,当然你也可以转换AllRollSumRoll行成一个班轮,即: SumRoll = sum(randi(NumFace, NumRoll, NumDice), 2); 。 我觉得两个内胆是更具可读性个人而言,我怀疑这会带来多大的改变,以代码的效率。



文章来源: Summing up Dice in MATLAB
标签: matlab dice