当多次调用时,函数内部的rand中的数字相同,C

时间:2014-09-19 19:13:43

标签: c

我有一个函数来从函数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;
}

1 个答案:

答案 0 :(得分:3)

time(NULL)返回秒,你的功能非常快,所以你可能在两次运行中播种相同的数字。

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