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

分类: 计算机技术
推荐阅读:
使用requests请求后的响应内容 使用Requests进行get请求或post请求后,requests会返回一个Response对象;
C语言isupper()函数:判断字符是否为大写字母 isupper()是C语言标准库中的一个函数,用于判断一个字符是否为大写字母(A~Z,ASCII码为65~90);传入的字符参数是一个大写字母时,返回非0值,否则返回0;
Golang实现base64加密解密 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。
显示当前挂载的文件系统 在Linux系统下,通过一条命令即可显示系统当前挂载的文件系统:
Linux终端重用上一条命令的参数 在Linux系统下,当你想使用上一条命令所用的参数,你可以通过这一条命令实现:
Python exec()函数 Python中的exec函数用于动态执行Python代码。它接受一个包含Python代码的字符串作为参数,并将其作为Python程序执行。