2015-09-25 172 views
-2

我的程序的这一小部分将在一个循环中生成2个随机值,循环将循环无限次,直到满足条件。我生成2个值,然后将这两个值添加到totalNum中,然后将totalNum传递给pointMatch变量。我需要pointMatch只接收第一个总数,然后在整个程序中保留相同的确切数字。之后,将生成下一代数字,然后将其添加到总数中。我需要检查这个总数是否等于上一个pointMatch,如果不是再次生成新的数字,直到满足条件。我似乎无法让pointMatch保持不变,总是等于总数。我似乎无法弄清楚我做错了什么?

+2

什么是'7 + 1 = 6'? –

+1

我不认为有人理解这个问题。 –

+1

为什么这个'while(totalRoll!= pointMatch){'a while而不是'if'?看起来它永远不会重复。 –

回答

2

问题是你想洁具达到目的,如果你想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 
} 

此外,它似乎好像所有的变量是全局变量,这通常是一个坏的迹象。

此结果与默认随机数生成器可为randValuesecondRandValue生成随机数一样随机,如果您有任何针对此方法的良好论点,请分享它。

+1

甚至更​​好,只是'return pointMatch;'如果打印仅用于调试目的。 –

相关问题