为什么rand()总是返回相同的值?

时间:2012-03-14 22:11:29

标签: c random

  

可能重复:
  Generating random numbers in C
  using rand to generate a random numbers

我正在尝试生成随机数,但我不断得到数字41。 在如此简单的片段中可能会出现什么问题?

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int a = rand();
    printf("%d",a);
    return 0;
}

感谢您的帮助。

2 个答案:

答案 0 :(得分:12)

您需要提供不同的种子,例如:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
    int a;
    srand ( time(NULL) );
    a = rand();
    printf("%d",a);
    return 0;
}

答案 1 :(得分:2)

你需要为发电机播种。

这是预期的。原因是结果的可重复性。假设您使用随机序列进行一些测试,并且在特定时间或迭代后测试失败。如果保存种子,则可以重复测试以复制/调试。使用epoch当前时间以毫秒为单位播种,并按预期获得randoms(如果您认为需要重复结果,则保存种子)。