当前位置: 首页 > news >正文

【Rust入门】生成随机数

文章目录

  • 前言
  • 随机数库rand
  • 添加rand库到我们的工程
  • 生成一个随机数
    • 示例代码
  • 总结


前言

在编程中,生成随机数是一种常见的需求,无论是用于数据分析、游戏开发还是模拟实验。Rust提供了强大的库来帮助我们生成随机数。在这篇文章中,我们将通过一个简单的示例来介绍如何在Rust中生成随机数。无论你是一位经验丰富的程序员,还是刚刚开始接触编程,我相信你都会从这个项目中学到一些有用的东西。


随机数库rand

他是一个库,不是rust自带的,他的介绍在这里:rand 库
Rust的rand库是一个用于生成随机数的库。它提供了一系列的方法和工具,可以用来生成各种类型和范围的随机数。

rand库中,最核心的部分是随机数生成器Rng。你可以通过thread_rng来获取一个随机数生成器。这个生成器可以用来生成各种类型的随机数,例如无符号整数(u8, u16, u32等)、有符号整数(i8, i16, i32等)和浮点数(f32, f64)。

此外,rand库还提供了一些其他的功能,例如生成指定范围内的随机数,生成随机布尔值,甚至生成随机字符串。这些功能使得rand库在很多场景下都非常有用,比如在需要随机化的算法中,或者在需要生成测试数据的时候。

Rust的rand库是一个强大而灵活的工具,它可以帮助你在Rust程序中方便地生成随机数。

添加rand库到我们的工程

打开我们的cargo.toml文件,在[dependencies]下面添加我们需要的库:
库名称="版本号"

在此刻,最新的rand版本号为:
在这里插入图片描述
.toml文件中,[dependencies]部分用于声明项目的依赖包。当你在依赖的版本号前面加上^时,这被称为跳脱条件。

跳脱条件允许SemVer兼容的更新指定版本。新的版本允许更新的条件是,不修改最左边的非零数字(无论是major,minor,还是patch)。例如,如果我们指定了^1.2.3,那么允许的版本范围就是>=1.2.3 <2.0.0。这意味着,只要新版本的主要版本号(major)不变,那么就可以使用新版本。

现在,我们就安装好了我们所需要的东西

生成一个随机数

rand::thread_rng()是Rust的rand库中的一个函数,它用于获取当前线程的随机数生成器。

在Rust中,每个线程都有自己的随机数生成器,这样可以避免在多线程环境中对随机数生成器的竞争。rand::thread_rng()函数就是用来获取当前线程的随机数生成器的。

获取到随机数生成器后,你就可以使用它来生成随机数了。例如,你可以调用gen()方法来生成一个随机数,或者调用gen_range()方法来生成一个指定范围内的随机数。

在Rust的rand库中,你可以使用gen_range方法来生成一个指定范围内的随机数。这个方法接受两个参数,分别是范围的下限和上限,并返回一个在这个范围内的随机数。

以下是一个简单的示例,展示了如何生成一个在1到100之间的随机整数:

use rand::Rng;fn main() {let mut rng = rand::thread_rng();let number = rng.gen_range(1..101);println!("随机数是: {}", number);
}

在这个例子中,rng.gen_range(1..101)会生成一个在1(包含)到101(不包含)之间的随机数。然后我们将这个随机数打印出来。

需要注意的是,gen_range方法的范围是半开的,也就是说,它包含下限,但是不包含上限。所以如果你想要生成一个在1到100之间的随机数,你需要写成1..101,而不是1..100

示例代码

use std::io;
use rand::Rng;fn main() {println!("Guess the number:");let secret_number = rand::thread_rng().gen_range(1..101);println!("secret_number:{}",secret_number);let mut guess = String::new();io::stdin().read_line(&mut guess).expect("Failed to read line");println!("You guessed: {}", guess);
}

总结

通过完成这个项目,我们已经对Rust中如何生成随机数有了一个基本的了解。我们学习了如何使用Rust的随机数库,以及如何生成不同类型和范围的随机数。虽然我们还有很多东西要学,但这个项目已经给我们提供了一个坚实的基础,我们可以在此基础上继续探索Rust的更多功能。记住,最好的学习方法就是动手实践。所以,不要停下来,继续探索Rust吧!

相关文章:

【Rust入门】生成随机数

文章目录 前言随机数库rand添加rand库到我们的工程生成一个随机数示例代码 总结 前言 在编程中&#xff0c;生成随机数是一种常见的需求&#xff0c;无论是用于数据分析、游戏开发还是模拟实验。Rust提供了强大的库来帮助我们生成随机数。在这篇文章中&#xff0c;我们将通过一…...

普通Java工程如何在代码中引用docker-compose.yml中的environment值

文章目录 一、概述二、常规做法1. 数据库配置分离2. 代码引用配置3. 编写启动类4. 支持打包成可执行包5. 支持可执行包打包成docker镜像6. docker运行 三、存在问题分析四、改进措施1. 包含environment 变量的编排文件2. 修改读取配置文件方式3. 为什么可以这样做 五、运行效果…...

微观特征轮廓尺寸测量:光学3D轮廓仪、共焦显微镜与台阶仪的应用

随着科技进步&#xff0c;显微测量仪器以满足日益增长的微观尺寸测量需求而不断发展进步。多种高精度测量仪器被用于微观尺寸的测量&#xff0c;其中包括光学3D表面轮廓仪&#xff08;白光干涉仪&#xff09;、共聚焦显微镜和台阶仪。有效评估材料表面的微观结构和形貌&#xf…...

Rust开发环境搭建

Rust开发环境搭建 环境 rust: 1.79.0(2024-06-13)1. Rustup下载器在线安装 windows&#xff1a; https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe unix&#xff1a; curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh2. R…...

图文识别0难度上手~基于飞浆对pdf简易ocr并转txt

前言 本篇pdf适用windows对视觉识别0基础的的纯小白用户。大佬请绕道~~ 注意&#xff1a; 本项目pdf的ocr对于表格、画图文字&#xff0c;水印等干扰没做任何处理&#xff0c;因此希望各位使用该功能的pdf尽量不要含有这些干扰项&#xff0c;以免影响翻译效果。 流程 1.构建…...

FFmpeg常用命令手册

官方文档&#xff1a;ffmpeg Documentation 常规选项 -i input_url 输入文件或者输入流的路径 Main 选项 -f fmt (input/output) 强制指定输入或输出文件的格式&#xff0c; 常见的格式名称包括flv&#xff0c;mp4、hls、mpegts、avi、mov -c[:stream_specifier] codec (i…...

CTF入门知识点

CTF知识点 md5函数 <?php$a 123;echo md5($a,true); ?> 括号中true显示输出二进制 替换成false显示输出十六进制绕过 ffifdyop 这个字符串被 md5 哈希了之后会变成 276f722736c95d99e921722cf9ed621c&#xff0c;这个字符串前几位刚好是 or 6 而 Mysql 刚好又会把 …...

Leetcode 完美数

1.题目要求: 对于一个 正整数&#xff0c;如果它和除了它自身以外的所有 正因子 之和相等&#xff0c;我们称它为 「完美数」。给定一个 整数 n&#xff0c; 如果是完美数&#xff0c;返回 true&#xff1b;否则返回 false。示例 1&#xff1a;输入&#xff1a;num 28 输出&a…...

springboot中的定时任务编写

第1部分&#xff1a;引言 1.1 定时任务的重要性 在现代软件开发中&#xff0c;定时任务是应用程序自动化和运维效率的关键组成部分。无论是数据备份、系统健康检查、定期报告生成&#xff0c;还是用户活动触发的自动化流程&#xff0c;定时任务都扮演着不可或缺的角色。它们确…...

第100+14步 ChatGPT学习:R实现随机森林分类

基于R 4.2.2版本演示 一、写在前面 有不少大佬问做机器学习分类能不能用R语言&#xff0c;不想学Python咯。 答曰&#xff1a;可&#xff01;用GPT或者Kimi转一下就得了呗。 加上最近也没啥内容写了&#xff0c;就帮各位搬运一下吧。 二、R代码实现随机森林分类 &#xff…...

C#面 :ASP.Net Core中有哪些异常处理的方案?

在 ASP.NET Core中&#xff0c;有多种异常处理方案可供选择。以下是其中几种常见的异常处理方案&#xff1a; 中间件异常处理&#xff1a; ASP.NET Core提供了一个中间件来处理全局异常。通过在Startup类的Configure方法中添加UseExceptionHandler中间件&#xff0c;可以捕获…...

论文辅导 | 基于多尺度分解的LSTM⁃ARIMA锂电池寿命预测

辅导文章 模型描述 锂电池剩余使用寿命&#xff08;Remaining useful life&#xff0c;RUL&#xff09;预测是锂电池研究的一个重要方向&#xff0c;通过对RUL的准确预测&#xff0c;可以更好地管理和维护电池&#xff0c;延长电池使用寿命。为了能够准确预测锂电池的RUL&…...

开关阀(4):对于客户技术要求信息的识别

1.阀门部分 2.执行器 行程时间的一般标准 The stroking times are applicable to throttling control valves and should not exceed 2 seconds/inch of valve diameter 3.附件 4.定位器...

Python统计实战:时间序列分析之二阶曲线预测和三阶曲线预测

为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能&#xff0c;从而更快地掌握解决问题所需的能力。 &#xff08;以下练习题来源于《统计学—基于Python》。请在Q群455547227下载原始数据。&#xff09; 练习题 下表是某只股票…...

Drools开源业务规则引擎(三)- 事件模型(Event Model)

文章目录 Drools开源业务规则引擎&#xff08;三&#xff09;- 事件模型&#xff08;Event Model&#xff09;1.org.kie.api.event2.RuleRuntimeEventManager3.RuleRuntimeEventListener接口说明示例规则文件规则执行日志输出 4.AgentaEventListener接口说明示例监听器实现类My…...

智慧校园行政办公升级,日程监控不可或缺

在智慧校园的行政办公场景下&#xff0c;日程监控功能扮演了一个核心协调者的角色&#xff0c;它细腻地编织起时间管理的网络&#xff0c;确保各项活动与任务在井然有序中高效推进。这一功能通过以下几个方面&#xff0c;展现了其在提升工作效率与团队协作方面的独特价值。 首先…...

RedHat运维-Linux SSH基础3-sshd守护进程

1. sshd这个守护进程提供了OpenSSH服务&#xff0c;请问可以通过编辑哪些配置文件&#xff0c;来配置这个服务呢&#xff1f;________________________ 2. sshd这个守护进程提供了OpenSSH服务&#xff0c;请问可以通过编辑哪些配置文件&#xff0c;来配置这个服务呢&#xff1f…...

医院产科信息化管理系统源码,智慧产科管理系统,涵盖了从孕妇到医院初次建档、历次产检、住院分娩、统计上报到产后42天全部医院服务的信息化管理。

医院产科信息化管理系统源码&#xff0c;智慧产科管理系统&#xff0c;产科专科电子病历系统 技术架构&#xff1a;前后端分离Java&#xff0c;Vue&#xff0c;ElementUIMySQL8.0.36 医院产科信息化管理系统&#xff0c;通过构建专科病例系统实现临床保健一体化&#xff0c;涵…...

Softmax作为分类任务中神经网络输出层的优劣分析

Softmax作为分类任务中神经网络输出层的优劣分析 在深度学习领域&#xff0c;Softmax函数作为分类任务中神经网络的输出层&#xff0c;被广泛应用并展现出强大的优势。然而&#xff0c;任何技术都有其两面性&#xff0c;Softmax函数也不例外。本文将从多个角度深入分析Softmax…...

404白色唯美动态页面源码

404白色唯美动态页面源码,源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;重定向这个界面 404白色唯美动态页面源码...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...