如何让“rand()”生成实际的随机数?

时间:2015-04-28 08:22:59

标签: c random

我收到了这段代码:

#include <stdio.h>
#include <conio.h>
int rand();

int main()
{
        int a = 1;

        while (a<=15)
        {
                printf("%d\n", rand());
                a++;
        }

        return 0;

}

生成随机数的函数在每次执行时生成相同的数字,我该如何解决?

4 个答案:

答案 0 :(得分:4)

您需要将rand()srand()一起初始化为:

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

int main()
{
    srand(time(NULL));
    int a = 1;

    while (a<=15)
    {
            printf("%d\n", rand());
            a++;
    }

    return 0;
}

简而言之,你需要随机喂一些种子才能完成他的工作,但你想在每次运行时给他新的种子,因此使用time(NULL)

哦,而且,您不需要在主管之前声明int rand();,而是将<stdlib.h>添加到您的包含列表中。

继续学习!

答案 1 :(得分:2)

你必须设置一个种子,所以在你的while循环之前这样做(也不要忘记包括:time.h):

srand(time(NULL));

答案 2 :(得分:2)

您可以使用

生成不同的随机数
#include <stdlib.h>   // for rand() and srand()
#include <time.h>     // for time()
// other headers

int main()
{
  srand(time(NULL));
  // rest of your code
}

通过使用srand(),您可以为随机数生成器播种,以便在程序的不同运行中获得不同的随机数。

并且还要从代码中删除int rand();,除非您尝试创建自己的rand()函数

答案 3 :(得分:1)

Seet种子或srand(time(NULL));

如果你随时间设置,请加入<time.h>库。

我推荐你include <stdlib.h> - 这是用于srand或rand函数。