c - 如何在一个运行时生成不同的随机数?

标签 c random srand

考虑这段代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ()
{
  int ctr;
  for(ctr=0;ctr<=10;ctr++)
    {
      int iSecret;
      srand ( time(NULL) );
      printf("%d\n",iSecret = rand() % 1000 + 1);
    }
}

它输出这个: 256 256 256 256 256 256 256 256 256 256

不幸的是,我希望输出在该循环中打印 10 个不同的随机数。

最佳答案

将对 srand(time(NULL)); 的调用移动到 for 循环之前。

问题是 time() 每秒仅更改一次,但您生成了 10 个数字,除非您的 CPU 非常慢,否则它会赢花点时间生成这 10 个随机数。

所以你每次都用相同的值重新播种生成器,使其返回相同的数字。

关于c - 如何在一个运行时生成不同的随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14795209/

相关文章:

c - 引用另一个 C 源文件中声明的 volatile 变量时是否需要 extern 关键字?

javascript - 在 Javascript 中生成真正的随机数

c - 用 C 语言编写一个程序,使用 rand() 函数创建 1000 个结构体

sql - 如何在MySQL中随机选择八个项目,每个项目都符合特定条件?

c - srand() 在数组随机初始化下不工作

c++ srand 不给出相同的随机数序列

谁能看出这有什么问题(C 中与时间相关的函数)

c++ - ELI5 : What is the data type of `int *p[]`

c - 查找数组的平均值

c - -DNDEBUG 会干扰 -g 标志吗?