c - 使用 srand() 避免重复生成种子

标签 c algorithm random srand

我有一个典型的情况,我需要生成一批随机数。我使用了一个循环,每次通过都会生成 100 个随机数:

for(int i=0; i<npasses; i++)
{
   srand(time(NULL)); //Initialize seed

   for(int j=0; j<100; j++)
      printf("%d ", rand()%10);

   printf("\n"); //New line after 100 numbers
}

现在,内部循环的执行时间不到一毫秒。因此,time() 的值没有变化。这将种子 (srand()) 重新初始化为相同的值,并且我的随机数被重复..

任何人都可以建议解决方法/修复。

最佳答案

srand 排除在外:

srand(time(NULL)); //Initialize seed
for(int i=0; i<npasses; i++)
{
   for(int j=0; j<100; j++)
      printf("%d ", rand()%10);

   printf("\n"); //New line after 100 numbers
}

关于c - 使用 srand() 避免重复生成种子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16585152/

相关文章:

algorithm - 给定起点的完全自回避行走的存在性

c - 我是否只是证明了埃拉托色尼筛法的效率低于试验划分?

java - IllegalArgumentException:绑定(bind)必须为正

c - 为什么在我通过 1 小时标记后,你会卡住最后几秒

c++ - 如何将 sscanf 的这种用法转换为 cin?

c# - 简单的正交图边路由算法

javascript - 如何使数组中的第一个变量成为默认变量

javascript - 在 javascript 或 typescript 中生成唯一的随机数

c - 将代码拆分为文件和 O 标志

c - free() 无效指针 - 释放指针数组失败