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; }

相关新闻

DLPC910 DMD控制器块模式与MCP时序详解及FPGA实现

DLPC910 DMD控制器块模式与MCP时序详解及FPGA实现

1. DLPC910与DMD控制器:从芯片手册到工程实践 如果你正在开发基于DLP技术的高分辨率投影、3D打印或高速光刻系统,那么DLPC910这颗芯片对你来说绝对不陌生。作为连接上层图像处理器(如FPGA)与数字微镜器件(DMD&#xff…

2026/7/15 23:24:18 阅读更多 →
Java中的hashCode():从算法原理到高效实现

Java中的hashCode():从算法原理到高效实现

1. 初识hashCode:为什么它如此重要?当你把一个对象放进HashMap或HashSet时,Java会悄悄调用这个对象的hashCode()方法。这个方法返回的整数值,就像快递柜的取件码,决定了你的数据会被存放在哪个"格子"里。我刚…

2026/7/15 23:24:18 阅读更多 →
COST231-WI模型参数解析与MATLAB仿真实践

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

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

2026/7/15 23:20:17 阅读更多 →

最新新闻

影刀RPA 接单实战:从需求对接到交付验收全流程

影刀RPA 接单实战:从需求对接到交付验收全流程

影刀RPA 接单实战:从需求对接到交付验收全流程 作者:林焱 什么情况用 当你RPA学到一定程度,会开始有人找你帮忙做自动化——同事让你帮忙写个数据采集流程、朋友公司要自动化对账、甚至闲鱼上有人发需求。这时候你面临的问题不是「会不会做」…

2026/7/16 0:20:31 阅读更多 →
常见网络安全名词

常见网络安全名词

木马 木马是指恶意代码伪装成正常的程序,当被运行时,会获取到整个系统的权限,比如往年的灰鸽子,蜜蜂大盗等,木马基本有四个特征:隐蔽性,欺骗性,顽固性和危害性。木马种类繁多。 网页…

2026/7/16 0:20:31 阅读更多 →
学生综合素质评价企业排名

学生综合素质评价企业排名

最近,我作为学校的信息化主任,正为“学生综合素质评价系统”的选型愁得睡不着觉。学校领导催得紧,说要为“双减”后的素质教育评价提供抓手。但跑了十几趟展会,看了不下二十家厂商的方案,我发现一个残酷现实&#xff1…

2026/7/16 0:16:31 阅读更多 →
计算机毕业设计之jsp学生党员资料管理系统

计算机毕业设计之jsp学生党员资料管理系统

在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括学生党员资料管理系统的网络应用,在外国学生党员资料管理已经是很普遍的方式,不过国内的学生党员资料管理可能还处于起步阶段。学生党员资料管理系统具…

2026/7/16 0:10:29 阅读更多 →
鸿蒙 7 新特性实战①:从 0 到 1 掌握 @kit 标准导入规范

鸿蒙 7 新特性实战①:从 0 到 1 掌握 @kit 标准导入规范

从鸿蒙 7(HarmonyOS NEXT)开始,官方全面完成了从 ohos.* 零散模块到 kit.* 领域套件的体系重构。对开发者来说,第一道门槛不是 API 用法变化,而是统一的导入规范——旧体系默认导入、解构导入混用的混乱局面被彻底终结…

2026/7/16 0:10:29 阅读更多 →
Python实现跨境电商商品图批量翻译教程

Python实现跨境电商商品图批量翻译教程

一、问题引入做跨境电商的卖家朋友,你是否遇到过这样的困扰?每次上架新品到亚马逊、Shopee或Lazada等平台,都需要处理大量商品图片的多语言版本。比如上架200款衣服,每款需要翻译成英语、日语、韩语等5种语言,这意味着…

2026/7/16 0:08:27 阅读更多 →

日新闻

HarmonyOs应用《重要日》开发第6篇 - 数据持久化存储

HarmonyOs应用《重要日》开发第6篇 - 数据持久化存储

本篇深入剖析 ImportantDays 项目的数据持久化方案——基于 HarmonyOS ArkData 模块的 Preferences 轻量级存储,以及 PreferenceUtil 工具类的单例封装。一、HarmonyOS 数据存储方案对比 HarmonyOS 提供了多种数据存储方案:方案适用场景特点Preferences轻…

2026/7/16 0:08:27 阅读更多 →
Python实现跨境电商商品图批量翻译教程

Python实现跨境电商商品图批量翻译教程

一、问题引入做跨境电商的卖家朋友,你是否遇到过这样的困扰?每次上架新品到亚马逊、Shopee或Lazada等平台,都需要处理大量商品图片的多语言版本。比如上架200款衣服,每款需要翻译成英语、日语、韩语等5种语言,这意味着…

2026/7/16 0:08:27 阅读更多 →
鸿蒙 7 新特性实战①:从 0 到 1 掌握 @kit 标准导入规范

鸿蒙 7 新特性实战①:从 0 到 1 掌握 @kit 标准导入规范

从鸿蒙 7(HarmonyOS NEXT)开始,官方全面完成了从 ohos.* 零散模块到 kit.* 领域套件的体系重构。对开发者来说,第一道门槛不是 API 用法变化,而是统一的导入规范——旧体系默认导入、解构导入混用的混乱局面被彻底终结…

2026/7/16 0:10:29 阅读更多 →

周新闻

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨 在一个阳光明媚的上午,互联网大厂的面试官坐在桌前,准备迎接他的面试候选人——燕双非,一个以搞笑和幽默著称的程序员。第一轮提问 面试官:燕双非,作…

2026/7/15 21:09:01 阅读更多 →
车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估在智能驾驶和车联网技术快速发展的今天,车载以太网作为新一代车载网络的核心传输技术,其物理层性能直接决定了数据传输的可靠性和稳定性。1000BASE-T1作为当前主流的…

2026/7/15 19:42:20 阅读更多 →
VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战指南嵌入式开发领域正经历一场工具链的静默革命。当传统Keil用户首次打开VSCode的扩展市场搜索EIDE时,往往会惊讶于这个看似简单的插件竟能重构十余年的开发习惯。本文将揭示如何用五个精准步骤&#xff0…

2026/7/15 17:52:08 阅读更多 →

月新闻