C语言中生成随机数的几种方式

一.rand

1.rand介绍

C语言提供了一个函数叫rand,这函数是可以生成随机数的,函数原型如下所示:

int rand (void);

rand函数会返回一个伪随机数,这个随机数的范围是在0~RAND_MAX之间,这个RAND_MAX的大小是依赖编译器上实现的,但是大部分编译器上是32767。

2.使用

头文件是:#include<stdlib.h>

printf("%d\n", rand());

rand()%100+1;//%100的余数是0~99,0~99的数字+1,范围是1~100

如果要生成100~200的随机数,方法如下:

100 + rand()%(200-100+1)

//余数的范围是0~100,加100后就是100~200

如果要生成a~b的随机数,方法如下:

a + rand()%(b-a+1)

3.说明:

rand函数是对一个叫“种子”的基准值进行运算生成的随机数。

每次运行程序产生的随机数序列是?样的,那是因为rand函数生成随机数的默认种子是1。如果要生成不同的随机数,就要让种子是变化的。

二.srand

1.srand介绍

C语言中还提供了一个函数叫srand用来初始化随机数的生成器的,srand的原型如下:

void srand (unsigned int seed);

程序中在调用rand函数之前先调用srand函数,通过srand函数的参数seed来设置rand函数生成随机数的时候的种子,只要种子在变化,

每次生成的随机数序列也就变化起来了。那也就是说给srand的种子是如果是随机的,rand就能生成随机数;在生成随机数的时候又需要一个随机数。

三.time

1.time函数介绍

在程序中我们一般是使用程序运行的时间作为种子,因为时间时刻在发生变化的。

在C语言中有一个函数叫time,就可以获得这个时间,time函数原型如下:

time_t time (time_t* timer);

time函数会返回当前的日历时间,其实返回的是1970年1月1日0时0分0秒到现在程序运行时间之间的差值,单位是秒。返回的类型是time_t类型的,time_t类型本质上其实就是32位或者64位的整型类型。

time函数的参数timer如果是非NULL的指针的话,函数也会将这个返回的差值放在timer指向的内存中带回去。

如果timer是NULL,就只返回这个时间的差值。time函数返回的这个时间差也被叫做:时间戳。

2.测试代码

头文件:#include<time.h>

如果只是让time函数返回时间戳,我们就可以这样写:

time(NULL);//调用time函数返回时间戳

四.生成随机数综合运用

1.用time函数返回值做为种子,然后再生成随机数

2.代码如下:

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main()

{

    // 设置种子为当前时间  

    srand((unsigned int)time(NULL));  

    // 生成并打印一个随机数(0到RAND_MAX之间)  

    int random_number = rand();  

    printf("随机数:%d\n", random_number);  

  

    // 生成并打印一个在指定范围内的随机数(例如1到100之间)  

    int min = 1, max = 100;  

    int range = max - min + 1;  

    int random_number = min + rand() % range;  

    printf("1到100之间的随机数:%d\n", random_number_in_range);

return 0;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/812459.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java快速幂算法

快速幂算法 参考视频(参考五角七边up大佬&#xff09; 幂运算的介绍 幂运算是指将一个数自身乘以自身多次的运算&#xff0c;其表达式为 a n a^n an&#xff0c;其中 a a a 是底数&#xff0c; n n n 是指数。 快速幂解释 快速幂算法是一种用于快速计算幂运算的算法&…

[当人工智能遇上安全] 13.威胁情报实体识别 (3)利用keras构建CNN-BiLSTM-ATT-CRF实体识别模型

《当人工智能遇上安全》系列将详细介绍人工智能与安全相关的论文、实践&#xff0c;并分享各种案例&#xff0c;涉及恶意代码检测、恶意请求识别、入侵检测、对抗样本等等。只想更好地帮助初学者&#xff0c;更加成体系的分享新知识。该系列文章会更加聚焦&#xff0c;更加学术…

Unity中支持泰语--没有版权限制

在Unity中支持泰语主要涉及以下几个方面&#xff1a; 选择合适的字体&#xff1a;在Unity中&#xff0c;确保使用支持泰文字符的字体是至关重要的。例如&#xff0c;可以选择使用Noto Serif Thai字体&#xff0c;这是一个支持泰语的字体2。 处理Unity版本问题&#xff1a;某些…

CentOS 网卡ifcfg-eth0 ping不通外网(www.baidu.com)

1、如果确认好就直接激活网卡&#xff01; ifup eth0 2、慢慢找&#xff1a; cd /etc/sysconfig/network-scripts/ ls 找到你的网卡是啥&#xff0c;这里网卡是 ifcfg-eth0 执行1就好了&#xff01;

JetBrains PyCharm 2024.1 发布 - 面向专业开发者的 Python IDE

JetBrains PyCharm 2024.1 发布 - 面向专业开发者的 Python IDE 请访问原文链接&#xff1a;JetBrains PyCharm 2024.1 (macOS, Linux, Windows) - 面向专业开发者的 Python IDE&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org…

LINUX[网络编程]

sendto函数的应用&#xff1a;向to结构体指针指向的IP&#xff0c;发送UDP数据 细节请看我注释&#xff0c;注满细节 代码&#xff1a; #include <stdio.h> #include <sys/socket.h> //socket函数 #include <unistd.h> //close函数 #include <st…

「PHP系列」PHP表单及表单验证详解

文章目录 一、表单二、表单校验三、相关链接 一、表单 PHP 表单用于收集用户输入的数据&#xff0c;并将这些数据发送到服务器进行处理。在 PHP 中&#xff0c;通常使用 HTML 表单来收集用户输入&#xff0c;然后通过 PHP 脚本处理这些数据。 <!DOCTYPE html> <html…

acwing2060. 奶牛选美

题目&#xff1a; 代码&#xff1a; //acwing2060. 奶牛选美 #include<iostream> #include<cstring> #include<algorithm> using namespace std; const int N55; const int dx[]{-1,0,1,0},dy[]{0,-1,0,1}; bool st[N][N]; int point[N][N]; char map[N][…

Go实现简单的协程池(通过channel实现)

go编程时&#xff0c;goroutine是非常有用的特性。然而&#xff0c;实践中最好不要无限制的使用goroutine&#xff0c;例如一次性开一万个goroutine去读写文件是很危险的。为了控制goroutine的并行量&#xff0c;有很多框架或库实现了协程池&#xff0c;例如ants&#xff08;很…

MYBATIS获取参数值

MYBATIS最核心的莫过于动态的获取各种的参数值, 为了将来更好的使用MYBATIS进行开发, 我们必须先打好 "获取参数值" 这一基础 一. MYBATIS获取参数值的两种情况: 1.${} 实质:字符串的拼接 注解:${}使用的字符串拼接的方式拼接SQL语句, 所以, 如果其中出现了字符串…

APP下载页前端自适应HTML源码

源码介绍 APP下载页前端自适应HTML源码&#xff0c;可以作为自己的软件介绍页或者app下载页&#xff0c;喜欢的朋友可以拿去研究 效果预览 HTML源码下载 https://www.qqmu.com/3026.html

Flink WordCount实践

目录 前提条件 基本准备 批处理API实现WordCount 流处理API实现WordCount 数据源是文件 数据源是socket文本流 打包 提交到集群运行 命令行提交作业 Web UI提交作业 上传代码到gitee 前提条件 Windows安装好jdk8、Maven3、IDEA Linux安装好Flink集群&#xff0c;可…

线上问题监控 Sentry 接入全过程

背景&#xff1a; 线上偶发问题出现后 &#xff0c;测试人员仅通过接口信息无法复现错误场景&#xff1b;并且线上环境的监控&#xff0c;对于提高系统的稳定性 &#xff08;降低脱发率&#xff09; 至关重要&#xff1b;现在线上监控工具这个多&#xff0c;为什么选择Sentry?…

Java并发(1)--线程,进程,以及缓存

线程和进程是什么&#xff1f; 进程 进程是程序的一次执行过程&#xff0c;系统程序的基本单位。有自己的main方法&#xff0c;并且主要由主方法运行起来的基本上就是进程。 线程 线程与进程相似&#xff0c;但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以…

vb.net textbox滚动显示到最后一行

调用&#xff1a; Private Sub TextBox18_TextChanged(sender As Object, e As System.EventArgs) Handles TextBox18.TextChanged show_textbox_endline(TextBox18) End Sub 函数&#xff1a; 显示textbox最后一行 Public Sub show_textbox_endline(Tbx As TextB…

MVCC(解决MySql中的并发事务的隔离性)

MVCC 如何保证事务的隔离性&#xff1f; 1.排他锁&#xff1a;如一个事务获取了一个数据行的排他锁&#xff0c;其他事务就不能再获取改行的其他锁。 2.MVCC&#xff1a;多版本并发控制。 MVCC&#xff1a; 1.隐藏字段 1.DB_TRX_ID&#xff1a;最近修改事务的id。默认值从0开…

Selenium自动填写验证码(偏小白版本OCR)

OCR基础示例 我直接 上代码 from PIL import Image import pytesseract# 0 Orientation and script detection (OSD) only. # 1 Automatic page segmentation with OSD. # 2 Automatic page segmentation, but no OSD, or OCR. # 3 Fully automatic page segmentation, but n…

【MYSQL】索引机制概述

由于MySQL是作为存储层部署在业务系统的最后端&#xff0c;所有的业务数据最终都要入库落盘&#xff0c;但随着一个项目在线上运行的时间越来越久&#xff0c;数据库中的数据量自然会越来越多&#xff0c;而数据体积出现增长后&#xff0c;当需要从表查询一些数据时&#xff0c…

symfony框架

Symfony框架是一种流行的PHP框架&#xff0c;用于快速开发高质量的Web应用程序。它是一个开源框架&#xff0c;遵循MVC&#xff08;模型-视图-控制器&#xff09;设计模式&#xff0c;提供了一套强大的工具和组件&#xff0c;帮助开发人员更轻松地构建复杂的Web应用程序。 Sym…

Apache Storm的详细配置

Apache Storm的详细配置主要涉及以下几个方面: Zookeeper配置:Apache Storm使用Zookeeper来进行协调和配置管理。你需要配置Zookeeper集群的连接信息,包括Zookeeper服务器的主机和端口。 Storm Nimbus配置:Nimbus是Storm的主节点,负责分配任务给各个工作节点。你需要配置N…