rand()和srand()函数在C语言中的应用
本文通过示例介绍rand()函数和srand()函数在C语言中的用法;
使用rand()函数生成随机数
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int num;
for (int i=0;i<10;i++){
num = rand();
printf("%d\n", num);
}
return 0;
}
这段代码有个问题,当重复运行这个程序会发现,每次生成的十个随机数都相同;
因为rand()函数生成的随机数是伪随机数;它是通过一个固定算法生成的,其随机种子与生成的随机值存在映射关系;
使用srand()函数
srand()函数是随机数发生器的初始化函数,通常传入一个随机种子(初始值);
要想每次运行程序得到的随机数都不一样,就需要传入一个每次都不一样的随机种子;
系统的当前时间戳、进程识别码(每次运行程序,进程标识码都不一样)都可以作为一个简单的随机种子;
示例代码如下:
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int num;
//将当前时间戳与进程标识码相加 作为随机种子
srand((unsigned int) time(0) + getpid());
for (int i=0;i<10;i++){
num = rand();
printf("%d\n", num);
}
return 0;
}