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;
}

如需转载,请注明出处;本文地址:https://www.perfcode.com/p/rand-srand-functions-in-c.html