【Rust自学】2.2. 猜数游戏Pt.2 生成随机数
2.2 猜数游戏Pt.2 生成随机数2.2.0 本篇知识点在本篇中你将学到:- 外部 crate 的搜索与下载- Cargo 依赖项管理- 基于语义化版本的升级规则-rand随机数生成器- ...2.2.1 游戏目标生成一个 1 到 100 间的随机数本篇会涉及提示玩家输入一个猜测猜完之后程序会提示猜测是太大了还是太小了如果猜测正确那么打印一个庆祝信息程序退出2.2.2 代码实现Step 1寻找外部库虽然 Rust 标准库内并没有提供与生成随机数相关的函数但 Rust 团队开发了具有这个功能的外部库。在 Rust 官方 crates 注册中心 中搜索rand就可以找到它。这个页面提供了非常详细的 crate 介绍。Rust 的 crate 一共分为两种-库 crateLibrary crate提供功能或逻辑模块的 crate。它没有main函数不能单独运行。通常用于与其他代码共享功能。rand这个 crate 就属于库 crate。-二进制 crateBinary crate可执行程序包含一个main函数编译后会生成可运行的二进制文件。用于构建独立、可运行的 Rust 应用程序。Step 2把这个外部 crate 写入 Cargo 依赖项接下来就需要把这个外部库写入 Cargo 依赖项有关 Cargo 的介绍在 1.3. Rust Cargo 基础知识 中已提及这里不再重复以供程序调用。打开项目中的Cargo.toml文件在dependencies下面添加依赖项格式为依赖项名 依赖项版本crate 页面的Install一栏下也有这种写法。这个程序需要rand这个依赖项并且使用0.8.5这个版本就应该写rand 0.8.5。如果这个依赖项还有自己的依赖项Cargo 就会在编译时自动下载它们。实际上0.8.5这种版本号写法是一种简写其完整写法为^0.8.5表示任何与0.8.5版本公共 API 兼容的版本都可以至少是0.8.5但低于0.9.0。比如某个依赖项的版本是1.2那就相当于^1.2.0意味着允许任意1.2.0且2.0.0的版本——因此可以解析到1.3.0等更高的1.x版本但不会升级到2.0.0或更高版本。Cargo 会把实际选中的精确版本记录在Cargo.lock中并在之后的构建中复用这些版本直到你更新依赖例如使用cargo update。如果某个依赖项的更新会破坏基于旧版本依赖项编写的代码那么重新构建后会发生什么呢答案在Cargo.lock文件中。在构建时Cargo 会检查是否已经存在Cargo.lock文件如果有就使用这个文件里指定的版本从而避免兼容性问题。如果想在当前标准下更新版本可以在终端中使用cargo update。具体步骤如下:- 复制 Cargo 项目所在路径打开终端输入cd Cargo_project_path- 输入cargo update这个命令会更新Cargo.lock向注册表查询仍然满足Cargo.toml中要求的最新依赖版本Cargo.toml里写下的版本要求本身不会改变。举个例子假如某个依赖项在Cargo.toml中声明的版本是1.2cargo update就可以把锁定的版本升级到不低于1.2.0的最新1.x.x但不会升级到2.0.0或更高版本同时Cargo.toml中写下的要求依然是1.2。Step 3在代码中使用这个依赖项在程序开头需要使用关键字use来导入依赖项:use rand::Rng;rand::Rng是一个trait。trait类似于其他语言中的接口如 Java 的接口或 C 的纯虚基类用于规定一组类型必须实现的函数和方法。rand::Rng定义了随机数生成器所需的一些方法。接下来在main中使用这个 trait 来生成随机数:let range_number rand::thread_rng().gen_range(1..101);PS在旧版本中应写为gen_range(1, 101)。let range_number声明了一个叫做range_number的不可变变量赋值rand::thread_rng()返回一个ThreadRng值它是一个随机数生成器。这个随机数生成器位于本地线程空间并通过操作系统获得种子。.gen_range(1..101)rand::thread_rng()上的一个方法它接收一个范围并在该范围内生成随机数。这里会生成从 1 开始、到但不包括 101 的数字。最后再打印出这个随机数println!的使用在 2.1 猜数游戏Pt.1 一次猜测 已作介绍这里不再重复:println!(The secret number is: {}, range_number);2.2.3 代码效果这是完整的代码:use std::io; use rand::Rng; fn main() { let range_number rand::thread_rng().gen_range(1..101); println!(Number Guessing Game); println!(Guess a number); let mut guess String::new(); io::stdin().read_line(mut guess).expect(Could not read the line); println!(The number you guessed is:{}, guess); println!(The secret number is: {}, range_number); }运行效果如下每次运行的神秘数字都会不同:Number Guessing Game Guess a number 10 The number you guessed is:10 The secret number is: 65

相关新闻

GPT-5.6常见问题排查:API调用错误、参数配置与解决方案

GPT-5.6常见问题排查:API调用错误、参数配置与解决方案

踩过的坑比学到的经验更值钱过去大半年我一直在研究多模型集成方案,从自研搭建到开源 UI 部署,再到第三方平台,踩了不少坑。最近在 kulaai(titiai.cn) 上找到了一个比较省心的方案,顺手把 GPT-5.6 使用中最…

2026/8/20 3:50:22 阅读更多 →
[AG-UI详解-05]如何构建一个兼容AG-UI协议的客户端

[AG-UI详解-05]如何构建一个兼容AG-UI协议的客户端

在AG-UI详解-04:如果构建一个兼容AG-UI协议的Agent中,我们通过在一个ASP.NET Core应用中注册了一个绑定指定IChatClient的路由终结点,使外界可以通过Web调用的方式以AG-UI协议调用对应的LLM。在这篇文章中,我们看看AG-UI客户端又该…

2026/8/20 0:37:16 阅读更多 →
GraphRAG技术深度解析:知识图谱驱动的检索增强生成

GraphRAG技术深度解析:知识图谱驱动的检索增强生成

GraphRAG技术深度解析:知识图谱驱动的检索增强生成 随着大语言模型在企业知识管理场景的深入应用,传统向量RAG在处理需要多跳推理、全局总结和关系分析的复杂查询时逐渐力不从心。GraphRAG(图检索增强生成)通过将知识库构建为知识…

2026/8/20 1:09:42 阅读更多 →

最新新闻

如何让AI联网搜索:ChatPilot Google搜索工具(Serper/DuckDuckGo)配置实战

如何让AI联网搜索:ChatPilot Google搜索工具(Serper/DuckDuckGo)配置实战

如何让AI联网搜索:ChatPilot Google搜索工具(Serper/DuckDuckGo)配置实战 【免费下载链接】ChatPilot ChatPilot: Chat Agent Web UI,实现Chat对话前端,支持Google搜索、文件网址对话(RAG)、代码…

2026/8/22 14:45:08 阅读更多 →
手机也能跑 Forge——HMCL-PE 启动器上手实测

手机也能跑 Forge——HMCL-PE 启动器上手实测

手机也能跑 Forge——HMCL-PE 启动器上手实测 【免费下载链接】HMCL-PE-CN Hello Minecraft! Launcher for Android 项目地址: https://gitcode.com/gh_mirrors/hmc/HMCL-PE-CN 手机上玩 Minecraft,多数人选的只有基岩版:想换老版本、想装模组&am…

2026/8/22 14:45:08 阅读更多 →
BetterGI|基于计算机视觉的原神自动化开源辅助工具

BetterGI|基于计算机视觉的原神自动化开源辅助工具

BetterGI|基于计算机视觉的原神自动化开源辅助工具 【免费下载链接】better-genshin-impact 📦BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音游 | 自动…

2026/8/22 14:45:08 阅读更多 →
如何自己动手做一个迷你CDN?http_study之Nginx proxy_cache缓存完整实战

如何自己动手做一个迷你CDN?http_study之Nginx proxy_cache缓存完整实战

如何自己动手做一个迷你CDN?http_study之Nginx proxy_cache缓存完整实战 【免费下载链接】http_study follow me to study http 项目地址: https://gitcode.com/gh_mirrors/ht/http_study 📌 http_study 是《透视HTTP协议》的配套开源项目&#x…

2026/8/22 14:45:08 阅读更多 →
B站视频下载:bilibili-downloader免费拉取4K源流

B站视频下载:bilibili-downloader免费拉取4K源流

B站视频下载:bilibili-downloader免费拉取4K源流 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 出差或飞行途中&#xff…

2026/8/22 14:45:07 阅读更多 →
gRPC 错误处理入门第一课:用 grpc-errors 快速搞懂 9 大语言的报错与捕获

gRPC 错误处理入门第一课:用 grpc-errors 快速搞懂 9 大语言的报错与捕获

gRPC 错误处理入门第一课:用 grpc-errors 快速搞懂 9 大语言的报错与捕获 【免费下载链接】grpc-errors A handy guide to gRPC errors 项目地址: https://gitcode.com/gh_mirrors/gr/grpc-errors 学习 gRPC 错误处理时,新手最大的困惑就是不同语…

2026/8/22 14:44:07 阅读更多 →

日新闻

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

在电子硬件开发领域,PCB(印制电路板)的沉金工艺是提升产品可靠性和焊接质量的关键环节。对于需要高密度互连、长期稳定运行或高频信号传输的板卡,如“黍姐仿通行证”这类可能涉及身份识别、数据交互的硬件项目,选择正确…

2026/8/22 0:00:11 阅读更多 →
电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

这次我们来看一个针对电气考研电路科目的学习规划项目。它不是软件工具,而是一套聚焦于8月份关键节点的备考策略。对于电气工程考研的同学来说,电路分析是专业课的重中之重,也是拉开分差的关键。进入8月,复习进入强化阶段&#xf…

2026/8/22 0:00:11 阅读更多 →
消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

大家好,我是专注于前端开发与AI工具实践的技术博主。在日常使用 Claude Code 等AI编程助手时,你是否也遇到过这样的困扰:生成的代码功能上没问题,但代码风格、组件设计、交互逻辑总透着一股“AI味”——布局单调、样式简陋、交互生…

2026/8/22 0:00:11 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/21 3:21:33 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/22 8:09:09 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/21 6:07:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/21 16:42:28 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/22 7:31:03 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →