我想找到最小数量或最大数量,如果放入X数量的骰子和X数量的骰子边,我可能会收到最小数量或最大数量。我知道如果我只掷一个骰子,那么最小值就是“minrange”,最大值是“minrange”+“numOfSides”,但是如果我掷出多个骰子,我如何找到可能产生的最小/最大数量?如何从骰子滚动中找到最小值和最大值?
double rollDice(int numOfDice, int numOfSides, int divide, int minrange) {
int i = 0;
subtotal = 0;
while (i < numOfDice) {
roll = 0;
roll = minrange + (rand() % numOfSides);
subtotal += roll;
i++;
}
return subtotal/divide;
}
简单地说 - 如果你有'X'骰子,每个骰子最小值和最大值都是'MIN',那么总的最小值是'X * MIN',总的最大值是'X * MAX'。如果你有经典的6面骰子,它有'MIN = 1','MAX = 6'。你掷出3个这样的骰子,那么总的最小值是'3 * 1 = 3',总的可达到的最大值是'3 * 6 = 18'。或者我误解了这个问题? – 2014-11-02 00:43:31
@RomanHocke这是有道理的,但如果我确实告诉程序要掷出3个骰子,其中有6个面;那么我所要做的就是将边的数量乘以骰子的数量以达到最大值,但它如何知道最小值会是多少,还是总是最小值? – cscx 2014-11-02 00:51:37
你必须知道,每个骰子的最小数字是多少。如果每个骰子都有最小值“MIN”,那么你可以将'X * MIN'滚动到最小。因此,如果您使用经典的骰子,其最小可滚动数字为'1',那么您用'X'掷骰滚动的最小值必须是'X * MIN = X * 1 = X'。试想一下你手中的三颗骰子。第一个滚筒1最小,第二个滚筒至少滚动1,第三个最小滚动1。这增加了最小三卷。 – 2014-11-02 01:00:13