C 获取错误的随机数和

C 获取错误的随机数和,c,random,C,Random,我在玩骰子游戏,我需要掷骰子5次,然后对随机数求和。一切正常,但我的总数不是根据我得到的随机数 for (int i = 1; i <= 5; i++) { printf(" %d time dice rolled = %d \n",i, rand() % s + 1); x += rand() % s + 1; } printf("--------------------------------------Sum is %d", x); getch(); } s是

我在玩骰子游戏,我需要掷骰子5次,然后对随机数求和。一切正常,但我的总数不是根据我得到的随机数

for (int i = 1; i <= 5; i++)
{
    printf(" %d time dice rolled = %d \n",i, rand() % s + 1);
    x += rand() % s + 1;

}
printf("--------------------------------------Sum is %d", x);

getch();

}
s是骰子的边

显示信息时调用rand函数,保存时调用rand函数解释差异。

每次调用rand函数都将返回一个新值。因此,您打印的值与用于求和的值不同

解决方案是只调用rand一次,并将结果保存在temporare变量中。比如:

int tmp;
int x = 0;
for (int i = 1; i <= 5; i++)
{
    tmp = rand();  // Only call rand once !

    printf(" %d time dice rolled = %d \n",i, tmp % s + 1);
    x += tmp % s + 1;
}
printf("--------------------------------------Sum is %d", x);

你知道吗,每次你给兰德打电话,你都会得到不同的价值,对吗?所以你打印了一个值,却添加了另一个值,为什么要给兰德打两次电话?它将不一样,因此将其分配给一个变量。啊!我没有看到任何正确的int x=0初始化,因此您可以从垃圾值开始。