尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
C语言从入门到入土如何之实现生成随机数
编译器VS20261.rand函数c语言提供了一个函数叫rand这个函数可以生成随机数int rand ( void );这个函数会返回一个伪随机数范围是0~RAND_MAX之间一般是32768使用 rand 函数是需要包含头文件:stdlib.h我们可以运行下面代码看到结果#includestdio.h #includestdlib.h int main() { printf(%d\n, rand()); printf(%d\n, rand()); printf(%d\n, rand()); printf(%d\n, rand()); printf(%d\n, rand()); return 0; }生成了一组随机数但是再次运行的时候还是一模一样的数据并不能实现每次运行都随机的效果。我们发现rand函数随机的数是伪随机的伪随机并不是真正的随机是通过某种算法生成的数真正的随机数并不能预判下一个生成的数值是多少。rand函数是对一个叫种子的基准值进行运算生成的随机数种子默认是1如果要生成真正的随机数就必须让种子是变化的。2.srand函数c语言又提供了一个函数叫srand用来初始化随机数的生成器void srand (unsigned int seed);程序在运行时先调用srand函数通过srand的参数seed来设置rand生成随机数的种子只要种子在变化每次生成的随机数列也就变化起来了。当我们尝试给srand函数输入1就能看到结果和我们之前自然生成的是同一个结果。但是光有这个函数是不够用的给srand的种⼦是如果是随机的rand就能⽣成随机数在⽣成随机数的时候⼜需要⼀个随机数所以就引出核心函数time来完美解决这个问题。3.time因为时间是一直在变化的所以一般程序运行使用时间作为种子time_t time (time_t* timer);time 函数会返回当前的⽇历时间返回的类型是time_ttime_t本质上就是32位和64位的整形类型。time函数的参数timer如果是⾮NULL的指针的话函数也会将这个返回的差值放在timer指向的内存 中带回去。 如果timer是NULL就只返回这个时间的差值。time函数返回的这个时间差也被叫做时间戳。使用time函数的时候需要包含头⽂件time.h因为srand的返回类型是unsigned int 所以使用时添加强制类型转换即可这时值就是随机的了。4.设置生成随机数的范围如果需要生成0~99rand() % 100;余数是99想生成0~100只需要在100后面1即可rand() % 100 1;如果要生成100~200100 rand() % (200 - 100 1) //余数的范围是0~100加100后就是100~200需要生成a~b的随机数时也可以运用数字对应的ascall值来实现a rand() % (b - a 1)同理想生成1~10的数只要把100改成105.随机数的应用猜数字游戏#define _CRT_SECURE_NO_WARNINGS #includetime.h #includestdio.h #includestdlib.h void game() { int r rand() % 100 - 1;//设置随机数生成范围0~100 //printf(%d\n, r); int guess 0; int count 5; while (count--) { printf(请输入数字\n); scanf(%d,guess); if (guess r) { printf(猜大了\n); printf(还剩%d次机会\n, count); } else if (guess r) { printf(猜小了\n); printf(还剩%d次机会\n, count); } else { printf(恭喜你猜对了\n); break; } } } int main() { int input 0; srand((unsigned int)time(NULL)); do { printf(**********************\n); printf(*** 1.开始游戏 ****\n); printf(*** 0.退出游戏 ****\n); printf(**********************\n); scanf(%d,input); switch (input) { case 1: game(); break; case 0: printf(退出游戏\n); break; default: printf(请重新输入\n); break; } } while (input);//输入的结果为0时为假循环自动结束。 return 0; }
RELATED

相关推荐

COST231-WI模型参数解析与MATLAB仿真实践

COST231-WI模型参数解析与MATLAB仿真实践

1. COST231-WI模型入门:从物理参数到路径损耗第一次接触COST231-WI模型时,我被那一堆参数搞得头晕眼花——建筑物高度、街道宽度、信号入射角...这些看似普通的建筑参数,竟然能直接影响手机信号的强弱?后来在实际项目中调试城市微…

📅 2026/9/1 0:08:22
大功率设备线缆选型实战:从国标到口诀的载流量计算指南

大功率设备线缆选型实战:从国标到口诀的载流量计算指南

1. 大功率设备线缆选型的核心挑战第一次接手大型工业电机供电项目时,我盯着设计图纸上380V/200kW的功率参数发呆了半小时。这种功率等级的设备,电缆选错轻则造成数十万元的材料浪费,重则引发严重安全事故。普通家电的电源线可能随便选选就能用…

📅 2026/9/4 22:30:17
真实事件影视改编技术方案:从剧本数字化到后期制作全流程

真实事件影视改编技术方案:从剧本数字化到后期制作全流程

这次我们来看一个基于真实事件改编的影视项目《一纸托付,铭记终身!》。这个项目最值得关注的是它如何将真实故事转化为影视作品,以及在技术实现上的创新点。对于影视制作从业者和技术爱好者来说,了解这类项目的制作流程和技术细节…

📅 2026/9/5 22:37:42
MORE NEWS

更多资讯

📰

深入解析 LlamaIndex KeywordTableIndex:基于关键词表的轻量级索引与查询原理

深入解析 LlamaIndex KeywordTableIndex:基于关键词表的轻量级索引与查询原理 【免费下载链接】llama_index LlamaIndex is the document processing platform for AI 项目地址: https://gitcode.com/GitHub_Trending/ll/llama_index KeywordTableIndex 是 L…

📰

CMSIS-NN源码尽调实战:从指令集拓扑到加速证据链

1. 为什么CMSIS-NN的源码不能“扫一眼就懂”——从ARM官方文档的沉默说起CMSIS-NN这个库,名字里带“NN”,大家第一反应就是“神经网络加速”。但如果你真去翻ARM官网的CMSIS-NN文档,会发现它像一本加密手册:API列表列得清清楚楚&a…

📰

Electron+Vue3桌面应用架构改造:从VSCode插件到原生能力落地

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Dapr 1.13.3 安全与稳定性修复深度解析:Token 泄露、Placement 分发中断与指标回归

Dapr 1.13.3 安全与稳定性修复深度解析:Token 泄露、Placement 分发中断与指标回归 【免费下载链接】dapr Dapr is a portable runtime for building distributed applications across cloud and edge, combining event-driven architecture with workflow orchestr…

📰

擦亮眼!不是随便一个 AI 就能搞定毕业论文,2026 导师认可工具全览

每年毕业季,无数同学深陷论文难题:开题毫无思路、搭建框架耗费数日、初稿逻辑松散、查重标红泛滥、AI检测超标、格式反复被导师驳回。现如今市面上通用型AI工具遍地开花,但绝大多数通用大模型存在编造虚假参考文献、学术语句口语化、AI生成痕…

📰

三维医学影像加密:基于3D物流图与改进奇里科夫图的混合方案

1. 项目背景与核心思路 最近在整理医学影像安全传输方案时,发现传统二维图像加密算法在三维数据保护上存在明显短板。这促使我研究基于3D物流图与改进型奇里科夫图的混合加密方案,经过两个月的算法调优和Matlab实现,终于完成了这套兼顾安全性…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬