我正在使用骰子游戏,其中我需要掷骰子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();
}
是骰子的侧面
您在显示信息时调用rand
函数,然后在保存时再次呼叫差异。
rand
的每个调用都会返回一个新值。因此,您打印的值不是与您用于总和的值相同。
解决方案是仅调用rand
一次,然后将结果保存在临时变量中。类似:
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);