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

分类: 计算机技术
推荐阅读:
为什么MD5说是128位,却只有32个字符? 为什么MD5说是128位,却只有32个字符?这是因为这两个长度的概念不同;
最新阿里云免费SSL证书申请教程 2021年最新申请阿里云免费SSL证书流程如下:
Requests详细教程 Requests 是一个功能强大、优雅而简单的 Python HTTP库;使用Requests发送网络请求整个过程将变得非常简单。
Python检查一个数是奇数还是偶数 本文将使用Python检查一个数是奇数还是偶数;偶数是能被2所整除的整数,若不是,那它就是奇数;奇数初以2的余数是1;
Golang中的数组切片 数组切片和数组在Go语言中不是同一种数据类型,但他们很相似,区别是数组只能是固定长度,而数组切片可灵活的改变长度。
Rust爬取网页上的所有链接 要在Rust中爬取网页上的所有链接,可以使用一些Rust的库,例如reqwest和scraper。