C 我似乎不知道我做错了什么?
我程序的这一小部分将在一个循环中生成2个随机值,该循环将无限次循环,直到满足条件为止。我生成2个值,然后将这两个值添加到totalNum中,totalNum将被传递到pointMatch变量。我需要pointMatch只接受第一个总数,然后在整个程序中保持相同的精确数字。之后,将生成下一代数字,然后将其添加到总数中。我需要检查总数是否等于上一个pointMatch,如果不重新生成新的数字,直到满足条件。我似乎无法保持pointMatch不变,它总是等于total。问题是,您正试图通过一种非常复杂的方法实现一个非常简单的目标,如果您希望C 我似乎不知道我做错了什么?,c,C,我程序的这一小部分将在一个循环中生成2个随机值,该循环将无限次循环,直到满足条件为止。我生成2个值,然后将这两个值添加到totalNum中,totalNum将被传递到pointMatch变量。我需要pointMatch只接受第一个总数,然后在整个程序中保持相同的精确数字。之后,将生成下一代数字,然后将其添加到总数中。我需要检查总数是否等于上一个pointMatch,如果不重新生成新的数字,直到满足条件。我似乎无法保持pointMatch不变,它总是等于total。问题是,您正试图通过一种非常复杂
pointMatch
保持不变,则不要通过rand()
生成第二个随机值,只需从pointMatch
中减去第一个
int rollDice() {
/* WRONG: just call this once in the whole program */
srand( time( NULL ));
/* pick a random value */
randValue = 1 + rand() % 6;
secondRandValue = pointMatch - randValue;
return randValue + secondRandValue; //return random total
}
而且,似乎所有的变量都是全局变量,这通常是一个坏迹象
这个结果是随机的,因为默认的随机数生成器可以为
randValue
和secondRandValue
生成随机数,如果你有任何好的理由反对这种方法,请分享它。这是什么7+1=6
??我认为没有人理解这个问题。为什么(totalRoll!=pointMatch){
一段时间,而不是如果
?它似乎永远不会重复。@moehajer如果你在这里创建pointMatch=totalRoll
,那么你就不能期望循环再次运行,你期望它吗?你想要这个:randValue=1+rand()%6;secondRandValue=pointMatch-randValue;
但是您希望secondRandValue
是随机的,但它不能,因为您正在修正总和,以便randValue+secondRandValue==pointMatch
,这就是您想要的吗?从某种意义上说,secondRandValue=pointMatch-randValue;
使其成为随机的。或者更好的是,j如果打印仅用于调试目的,则返回点匹配;。