【问题标题】:Getting wrong sum of random number得到错误的随机数总和
【发布时间】:2017-04-27 21:19:29
【问题描述】:

我在玩骰子游戏,我需要掷骰子 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?它不会是一样的,所以将它分配给一个变量。哇!
  • 我没有看到任何正确的 int x = 0 初始化,因此您可能是从垃圾值开始的。

标签: c random


【解决方案1】:

您在显示信息时调用rand 函数,然后在保存时再次调用这解释了差异。

【讨论】:

    【解决方案2】:

    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);
    

    【讨论】:

      猜你喜欢
      • 2011-02-08
      • 2021-09-08
      • 2011-11-14
      • 1970-01-01
      • 2021-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      相关资源
      最近更新 更多