C语言生成随机数的方法

文章目录

  • 一、rand函数:
  • 二、srand函数:
  • 三、time函数:
  • 四、生成范围随机数公式:
  • 五、实战练习:
  • 总结


一、rand函数:

int rand( void );

我们先来看一下rand函数的基本信息:
在这里插入图片描述
rand函数根据种子生成随机值,但是每次程序运行种子是固定的,如果只使用它实际上返回的是伪随机整数。
看上图红线部分内容:rand函数返回的伪随机整数。在调用rand之前,要先使用srand函数为伪随机数发生器设定种子。

二、srand函数:

void srand( unsigned int seed );

我们再来看一下srand函数的基本信息:
在这里插入图片描述
我们通过函数原型可以看到,srand需要一个无符号整形的一个种子参数,如果srand每次传入的种子相同的话,那么rand函数生成的随机值也是相同的,这在某种意义上并不随机了。

那么问题来了,要想随机值够随机的话,我们还需要一个随机种子~
通常我们使用时间作为随机数生成的种子,因为每次程序运行时间不相同,所以生成的随机数也肯定不相同。

三、time函数:

time_t time( time_t *timer );

我们再来看一下time函数的基本信息:
在这里插入图片描述
我们只需要给time函数传空指针NULL,他会给我们返回当前时间的时间戳。这样的话就可以实现时间种子生成随机数。

演示代码:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{srand((unsigned int)time(NULL));int ret = rand();printf("%d\n", ret);return 0;
}

四、生成范围随机数公式:

很多时候我们需要生成一个带范围的随机值:例如1~100。

其实这个很简单:

srand((unsigned int)time(NULL));
int ret1 = rand() % 10 + 1;//生成1~10的随机数
int ret2 = rand() % 100 + 1;//生成1~100的随机数
int ret3 = rand() % 34 + 66;//生成66~99的随机数
int ret4 = rand() % (n - m + 1) + m;//生成m~n的随机数

五、实战练习:

实战练习运用一下生成随机数:
点看这篇:C语言猜数字游戏


总结

以上就是今天要讲C语言生成随机数的内容,包含rand、srand和time函数的使用,希望对刚刚阅读本篇博客的你有所帮助。

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

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

相关文章

C++相关闲碎记录(1)

1、C绘制爱心图像 #include <iostream> #include <cmath>using namespace std;int main() {// 心形曲线公式 (x^2 y^2 - a)^3 - x^2*y^3 0double a 1;double bound 1.5 * sqrt(a);double step 0.05;for (double y bound; y > -bound; y - step) {for (do…

【面试题】JavaScript高级循环方法

给大家推荐一个实用面试题库 1、前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;web前端面试题库 除了for循环♻️&#xff0c;for-of,for-each循环♻️也是一个不错的选择 先说for-of循环♻️ 认识for-of循环♻️…

进程等待讲解

今日为大家分享有关进程等待的知识&#xff01;希望读完本文&#xff0c;大家能有一定的收获&#xff01; 正文开始&#xff01; 进程等待的引进 既然我们今天要讲进程等待这个概念&#xff01;那么只有我们把下面这三个方面搞明白&#xff0c;才能真正的了解进程等待&#x…

基于OpenCV+YOLOv5实现车辆跟踪与计数(附源码)

导 读 本文主要介绍基于OpenCVYOLOv5实现车辆跟踪与计数的应用&#xff0c;并给出源码。 资源下载 基础代码和视频下载地址&#xff1a; https://github.com/freedomwebtech/win11vehiclecount main.py代码:​​​​​​​ import cv2import torchimport numpy as npfrom tr…

spring Cloud在代码中如何应用,erueka 客户端配置 和 服务端配置,Feign 和 Hystrix做高可用配置

文章目录 Eureka一、erueka 客户端配置二、eureka 服务端配置 三、高可用配置FeignHystrix 通过这篇文章来看看spring Cloud在代码中的具体应用&#xff0c;以及配置和注解&#xff1b; Eureka 一、erueka 客户端配置 1、Eureka 启禁用 eureka.client.enabledtrue 2、Eurek…

Android修行手册-ViewPager定制页面切换以及实现原理剖析

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

基于Springboot的墙绘产品展示交易平台(有报告),Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的墙绘产品展示交易平台&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff0…

基于DSP/SOC音乐灯效系统设计方法

音乐灯效系统设计方法 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群赠送语音信号处理降噪算法,蓝牙耳机音频,DSP音频项目核心开发资料, 三种方法: (1)MIC 采集音乐信号变化,(2)直接获取SPK 模拟音频…

20231127让RK3399的挖掘机开发板在Andorid12系统下休眠唤醒之后禁止锁屏

20231127让RK3399的挖掘机开发板在Andorid12系统下休眠唤醒之后禁止锁屏 2023/11/27 20:55 适用于SOC以及系统版本&#xff1a; RK3399&#xff1a;Android10/11/12 RK3568&#xff1a;Android11/12 RK3588&#xff1a;Android12 当RK3399平台的Android12系统在休眠之后&#x…

笔记62:注意力汇聚 --- Nadaraya_Watson 核回归

本地笔记地址&#xff1a;D:\work_file\&#xff08;4&#xff09;DeepLearning_Learning\03_个人笔记\3.循环神经网络\第10章&#xff1a;动手学深度学习~注意力机制 a a a a a a a a a a a a a a a a

Vue简单的表单操作

效果预览图 完整代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>作业</title><styl…

<Linux> 文件理解与操作

目录 前言&#xff1a; 一、关于文件的预备知识 二、C语言文件操作 1. fope 2. fclose 3. 文件写入 3.1 fprintf 3.2 snprintf 三、系统文件操作 1. open 2. close 3. write 4. read 四、C文件接口与系统文件IO的关系 五、文件描述符 1. 理解文件描述符 2. 文…