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

分类: 计算机技术
推荐阅读:
Python实现双向链表 在本文中,我们将看到另一种类型的链表,可以向前和向后移动;这样的链接列表称为双重链接列表(双向链表)。
gin及其依赖库完整下载和安装方法 因为在线安装Gin需要科学访问外网,所以你无法使用最简单的方式安装Gin;虽然有其它方法可以安装成功,但那些方法对萌新朋友们不够友好。所以我打包了Gin及其依赖库并上传到了百度网盘,并附上了安装方法。
WordPress获取指定数量的随机文章(不用插件) 我们希望每次打开网站时,在某个位置生成随机的文章列表,可以通过以下代码实现:
requests中的超时(timeout)设定和捕获异常 为防止服务器不能及时响应,大部分发至外部服务器的请求都应该带着 timeout 参数。在默认情况下,除非显式指定了 timeout 值,requests 是不会自动进行超时处理的。如果没有 timeout,你的代码可能会挂起若干分钟甚至更长时间。
pyside6将信号与槽函数进行连接 在本文中,你将了解信号与槽的概念,掌握在Qt Designer中添加槽函数,以及在PySide6中的应用。
undefined reference to `WinMain' 解决方法 使用gcc对C代码进行编译时提示undefined reference to `WinMain',collect2.exe: error: ld returned 1 exit status;详细的信息大致如下: