【问题标题】:Same number from rand inside a function when called multiple times, C [duplicate]多次调用时,函数内部的rand相同的数字,C [重复]
【发布时间】:2014-09-19 19:13:42
【问题描述】:

我有一个函数可以从函数roll_dice 返回一个随机数,但是当我调用它时它似乎是一个问题,它给了我相同的数字,不知何故它在调用 agian 时没有给出一个新的种子.

int roll_dice(void){
  int random_dice_numbers[2];
  int i = 0;
  int sum = 0;
  srand(time(NULL));

  for(i = 0; i < 2; i++){
    random_dice_numbers[i] = rand() % 6+1;


  }

  sum = random_dice_numbers[0] + random_dice_numbers[1];
  return sum;

}

int main(void){
int sum = 0;

sum = roll_dice();
printf("You rolled", sum);

sum = roll_dice();
printf("You rolled", sum);

return 0;
}

【问题讨论】:

    标签: c


    【解决方案1】:

    time(NULL) 返回秒数,并且您的函数非常快,因此您可能在两次运行中使用相同的数字播种。

    您应该只为随机数生成器播种一次。

    【讨论】:

    • 是的,这是问题所在,将其更改为 main。像魅力一样工作
    • 感谢的最佳方式是接受有帮助的答案。 :)
    猜你喜欢
    • 2021-11-03
    • 2017-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    相关资源
    最近更新 更多