我想找到最小数目或最大数目,如果放置X数量的骰子和X数量的骰子面,我可能会收到。我知道,如果我只掷一个骰子,那么最小值将是“最小范围”,而最大值将是“最小范围” +“ numOfSides”,但是如果我要掷出多个带有X边数的骰子;我如何找到可以产生的最小/最大数量?
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;
}
#include <iostream>
void rollDice(int numOfDice, int numOfSides, int* minRange, int* maxRange) {
*minRange = numOfDice;
*maxRange = numOfDice * numOfSides;
return;
}
int main() {
int minRange;
int maxRange;
int noDice = 3;
int noSides = 6;
rollDice(noDice, noSides, &minRange, &maxRange);
std::cout << "Minimum range for " << noDice << " dice with " << noSides << "sides is: " << minRange << std::endl;
std::cout << "Maximum range for " << noDice << " dice with " << noSides << "sides is: " << maxRange << std::endl;
return 0;
}
首先,您的问题中有一些小错误,一个骰子的最高分不是minRange + numOfSides,而是numOfSides,并且对于任意数目的骰子,最低分将为noDice * 1 = noDice,最高分将为noDice *不可以。
好像您要计算任意数量的任意边骰子的最小和最大总数一样,从函数中检索两个值而不创建数据结构,数组或对象的最好方法是使用指针。通过使用&运算符传递变量的地址以存储minRange和maxRange,rollDice函数可以直接访问用于保存这些变量的内存块并将它们设置为适当的值。
这是我第一次尝试回答问题,希望它是您想要的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句