循环C中的随机数

时间:2013-10-20 14:21:11

标签: c for-loop random

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

我的问题是生成的随机数总是一样的。因为我使用时间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);
  }
}

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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);}