尧图网络 高端网站定制 · 原创设计
免费咨询热线
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

相关推荐

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

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

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

📅 2026/10/8 4:24:39
真实事件影视改编技术方案:从剧本数字化到后期制作全流程

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

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

📅 2026/9/12 13:57:36
S32K146 Flash ECC故障自救:从HardFault_Handler到系统恢复的实战指南

S32K146 Flash ECC故障自救:从HardFault_Handler到系统恢复的实战指南

1. 当S32K146遭遇Flash ECC故障时会发生什么第一次遇到S32K146因为Flash ECC错误卡死在HardFault_Handler时,我正给客户演示产品功能。设备突然死机,调试器显示程序计数器停在0xFFFFFFFD,那种感觉就像开车时突然刹车失灵。后来发现&#xff0…

📅 2026/9/12 14:03:37
MORE NEWS

更多资讯

📰

Word 忘记密码怎么找回?先分清 3 种情况,其中 2 种根本不用花钱

搜"Word 忘记密码怎么找回"的人,一大半其实不需要破解。 先花 3 分钟判断你属于哪一种,能省下钱,也能省下把文件传给陌生人的风险。 一、先别急着找工具,先做个 30 秒自检 Word 的"密码"是个被严重混淆的概念…

📰

Audio学习9(AudioFlinger/HAL)

1 环境 这次主要是看看audio在安卓平台的实现,用是瑞芯微RK3568开发板。 本来是想还是用之前的WM8960模块,但是很无语发现它板子上的I2S接口并没有引出来。引出的口只有I2C,SPI,还有UART。 和之前用的WM8960比较一下:…

📰

记录系统即权力:智能体时代企业底座迁移与决策权再分配

【摘要】以a16z 2026年10月发布的万字分析为核心依据,梳理4轮计算范式下的权力转移规律,结合Databricks年化收入70亿美元、智能体日均启动1700万个数据库的行业样本,拆解记录系统三权重构的底层逻辑,明确3类可量化失效边界&#x…

📰

第十章 GPU 虚拟地址空间管理:10.9 本章小结

1. 本章小结 本章讨论了 GPU 虚拟地址空间的管理。与 CPU 内存管理对照可以看出,GPU 内存管理在结构上沿用了地址空间、后备存储、反向映射与回收的分层,差异来自四项约束: 管理单位是 BO 而不是页; 多数 GPU 不能在作业执行中从缺页恢复,映射必须预先建立; 页表写入与数…

📰

企业年报详情查询:社保人数和股东出资,比注册资本更能说明问题

集团采购部每年四月做一轮供应商复审,表格里有一栏叫“经营规模”,往年照抄注册资本。今年审计翻到三十家供应商的底稿,问了一句:这三十家注册资本都在一千万以上,为什么有两家去年就停业了。 复审真正想确认的只有两件…

📰

gstreamer pipeline梳理及插件新增方案

一,整体播放的pipeline 1,playbin 主要做两件事情: 收到 uridecodebin 的 raw pad(pad-added)→ 接入 input-selector 的 sink_%u(pad_added_cb) 收到 uridecodebin 的 no-more-pads → request playsink p…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

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

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

📞 💬