【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/7/23 18:45:38 阅读更多 →
[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/7/23 18:44:38 阅读更多 →
GraphRAG技术深度解析:知识图谱驱动的检索增强生成

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

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

2026/7/23 18:44:38 阅读更多 →

最新新闻

2026发稿平台选型指南:三大主流平台优势详解

2026发稿平台选型指南:三大主流平台优势详解

在品牌公关塑造、SEO全域优化、网络舆情建设的完整营销体系中,新闻软文发稿始终是高性价比、高稳定性、长效沉淀品牌资产的核心营销方式。步入2026年,AI搜索GEO优化、圈层精准传播、全域流量深耕成为品牌营销主流趋势,媒体渠道的选择直接决定…

2026/7/23 19:01:46 阅读更多 →
视频下载神器,现在新的版本支持3000多平台,非常好用,推荐给大家

视频下载神器,现在新的版本支持3000多平台,非常好用,推荐给大家

还在为没法存喜欢的视频发愁吗?今天给大家发一波福利一款超好用的视频下载工具! 不管是腾讯视频、优酷、芒果 TV,还是其他主流平台,全都支持!复制视频链接,粘贴进来,一键解析、极速下载&#x…

2026/7/23 19:01:46 阅读更多 →
DSP/BIOS内存优化实战:模块化裁剪与配置策略详解

DSP/BIOS内存优化实战:模块化裁剪与配置策略详解

1. 项目概述与核心价值 在嵌入式DSP开发领域,尤其是面对TI TMS320系列这类资源受限的平台,内存从来都不是一个可以随意挥霍的资源。无论是追求极致功耗的便携设备,还是需要处理多路实时信号的高性能系统,每一字节的片上内存都弥足…

2026/7/23 19:01:46 阅读更多 →
全文 - APB3

全文 - APB3

AMBA APB 协议规范 版本:2.0 文档编号:ARM IHI 0024C (ID042910)原文:AMBA APB Protocol Specification, Version 2.0(ARM IHI 0024C) 版权所有 © 2003-2010 ARM。保留所有权利。 本文档为非机密(Non-…

2026/7/23 19:01:45 阅读更多 →
2026年如何系统的入门大模型?

2026年如何系统的入门大模型?

面向对大模型领域感兴趣的程序员。 看一下围绕大模型的应用场景和人才需求: **Prompt工程:**基于提示词对大模型的使用,会问问题就行。 **基于大模型的应用:**在大模型生态之上做业务层产品。AI主播、AINPC、AI小助手。。。之前…

2026/7/23 19:01:45 阅读更多 →
2026 年资质齐全跨境财税服务商行业调研与落地实操洞察

2026 年资质齐全跨境财税服务商行业调研与落地实操洞察

市面同类行业评测内容大多简单罗列机构名单、堆砌服务优势,同质化严重。本文跳出榜单式传统写作思路,以企业长期合规隐性成本为全新分析视角,结合 2026 年金税四期多部门数据互通监管环境,拆解跨境财税服务市场分层格局、三大行业…

2026/7/23 19:00:45 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻