2

我需要在 for 循环中生成 1000 个随机数。

我的问题是生成的随机数总是相同的。由于我使用 time NULL 来启动生成器,为什么我得到相同的数字?这是我使用的代码:

#include <stdio.h>
#include <stdlib.h>
#define LIMIT 30000

int main(){
  int i;
  srand((long) time(NULL));
  for(i = 0; i < 1000; i++){
    int x = rand() % LIMIT;
    printf("%d\n", x);
  }
}
4

2 回答 2

0

您的代码是正确的,但您忘记包含 time.h 库。

#include <stdio.h>
#include <stdlib.h>
#include <time.h> // <--- now it works
#define LIMIT 30000

int main(){

  int i;

  srand((long) time(NULL));

 for(i=0;i<1000;i++){

 int x = rand() % LIMIT;
 printf("%d",x);}
于 2013-10-20T17:30:32.987 回答
0

如果您在同一秒内多次运行该程序,您会将相同的值作为种子传递给生成器。您必须至少等待一秒钟才能再次尝试。

这是因为该time函数返回自特定时间以来的秒数,如果在同一秒内多次调用将返回相同的值。

于 2013-10-20T14:26:33.117 回答