Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.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
C 我似乎不知道我做错了什么?_C - Fatal编程技术网

C 我似乎不知道我做错了什么?

C 我似乎不知道我做错了什么?,c,C,我程序的这一小部分将在一个循环中生成2个随机值,该循环将无限次循环,直到满足条件为止。我生成2个值,然后将这两个值添加到totalNum中,totalNum将被传递到pointMatch变量。我需要pointMatch只接受第一个总数,然后在整个程序中保持相同的精确数字。之后,将生成下一代数字,然后将其添加到总数中。我需要检查总数是否等于上一个pointMatch,如果不重新生成新的数字,直到满足条件。我似乎无法保持pointMatch不变,它总是等于total。问题是,您正试图通过一种非常复杂

我程序的这一小部分将在一个循环中生成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如果打印仅用于调试目的,则返回点匹配;。