25-ESP32-S3 内置的真随机数发生器(RNG)

ESP32-S3 内置的真随机数发生器(RNG)😎

引言 📚

在许多应用中,随机数发生器(RNG)是必不可少的。无论是在密码学🔒、游戏🎮、模拟🧪或其他领域,随机数都有着广泛的用途。ESP32-S3,作为一款高级集成的Wi-Fi和蓝牙双模系统级芯片(SoC),内置了一个真随机数发生器(RNG)。本文将详细介绍ESP32-S3的RNG及其应用。

ESP32-S3 真随机数发生器(RNG)🎲

ESP32-S3的RNG是基于硬件的,它利用了数字电路中的热噪声来产生随机数。这种噪声是由晶体管的随机电子运动产生的,这种运动是真正的随机过程,因此产生的随机数也是真正的随机数。

使用ESP-IDF编程框架,可以很容易地在ESP32-S3上使用RNG。

1️⃣得到随机数 🎰

#include "esp_system.h"
#include "esp_log.h"void app_main(void)
{//获得随机数unsigned int random = esp_random();ESP_LOGI("randomNumber", "%u", random);
}

在这里esp_random()函数被用来生成一个32位的随机数,然后使用ESP-IDF的日志功能打印出来。

2️⃣得到某个范围内的随机数 📊

#include "esp_system.h"
#include "esp_log.h"
#include "esp_random.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#define MIN 10
#define MAX 100void app_main(void)
{//获得随机数unsigned int random = esp_random();//将随机数映射到我们给定的范围unsigned int scaled_random = MIN + (random % (MAX - MIN + 1));ESP_LOGI("randomNumber", "%u",scaled_random);while(1){vTaskDelay(pdTICKS_TO_MS(1000));}
}

上面表达式MIN + (random % (MAX - MIN + 1))用于生成一个在MINMAX之间的随机数(包括MINMAX)。

让我们分解一下这个表达式:

  1. random % (MAX - MIN + 1):会生成一个在0MAX - MIN之间的随机数。例如,如果MIN是10,MAX是100,那么MAX - MIN + 1就是91,而任何数除以91的余数都会在0到90之间所以这个表达式会生成一个在0到90之间的随机数。

  2. MIN + ...:然后,我们将上一步得到的随机数加上MIN。这样,生成的随机数就在MINMAX之间了。

这个表达式可以确保生成的随机数在指定的范围内。这是一种常见的方法,用于在给定范围内生成随机数。

在这里插入图片描述

结论 🎓

参考资料 📖

ESP-IDF 随机数发生器

正点原子DNESP32S3 开发板教程-IDF 版

希望这篇博客对你有所帮助!😊

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3016554.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【第6节课笔记】LagentAgentLego

Lagent 最中间部分的是LLM,即为大语言模型模块,他可以思考planning和调用什么action,再将其转发给动作执行器action executer执行。 支持的工具如下: Arxiv 搜索 Bing 地图 Google 学术搜索 Google 搜索 交互式 IPython 解释器 IP…

6.Nginx

Nginx反向代理 将前端发送的动态请求有Nginx转发到后端服务器 那为何要多一步转发而不直接发送到后端呢? 反向代理的好处: 提高访问速度(可以在nginx做缓存,如果请求的是同样的接口地址,这样就不用多次请求后端&#…

【数据结构】C/C++ 带头双向循环链表保姆级教程(图例详解!!)

目录 一、前言 二、链表的分类 🥝单链表 🥝双链表 🥝循环链表 🥝带头双向循环链表 🍍头节点(哨兵位)的作用 ✨定义: ✨作用: 🍇总结 三、带头双向循环链表 …

一键解密,网络安全神器现已问世!

一、简介 当前版本V1.1这款工具是一款功能强大的网络安全综合工具,旨在为安全从业者、红蓝对抗人员和网络安全爱好者提供全面的网络安全解决方案。它集成了多种实用功能,包括解密、分析、扫描、溯源等,为用户提供了便捷的操作界面和丰富的功…

Python Dash库:一个Web应用只需几行代码

大家好,在数据科学领域,数据可视化是将数据以图形化形式展示出来,帮助我们更直观地理解数据。Python中有一个非常流行的数据可视化库叫做Dash,Dash以其简洁、高效和强大的功能而闻名,它允许开发者快速构建交互式Web应用…

Offline:IQL

ICLR 2022 Poster Intro 部分离线强化学习的对价值函数采用的是最小化均方bellman误差。而其中误差源自单步的TD误差。TD误差中对target Q的计算需要选取一个max的动作,这就容易导致采取了OOD的数据。因此,IQL取消max,,通过一个期望回归算子…

STM32接入CH340芯片的初始化进入升级模式(死机)问题处理

目录 1. 问题描述2. 问题分析2.1 CH340G/K 的初始化波形2.2 第1种USB升级电路2.3 第2种USB升级电路2.4 第3种USB升级电路2.5 第4种USB升级电路 3. 总结 1. 问题描述 我所用的CH340G(CH340K也用过)接在MCU的电路中,在插入CH340G/K 的接插件&a…

【一刷《剑指Offer》】面试题 16:反转链表

力扣对应题目链接:206. 反转链表 - 力扣(LeetCode) 牛客对应题目链接:反转链表_牛客题霸_牛客网 (nowcoder.com) 核心考点 :链表操作,思维缜密程度。 一、《剑指 Offer》内容 二、分析题目 解题思路&#…

程序员的实用神器:助力软件开发的利器 ️

程序员的实用神器:助力软件开发的利器 🛠️ 程序员的实用神器:助力软件开发的利器 🛠️引言摘要自动化测试工具:保障代码质量的利剑 🗡️编写高效测试用例 持续集成/持续部署工具:加速交付的利器…

Richard 林旅强:说说社区的故事和对 RTE 社区的畅想

各位 RTE 开发者社区的小伙伴们,大家好: 我是 Richard 林旅强,今年起开始担任我们 RTE 社区联合主理人,很荣幸能在这里跟杜金房老师和陈靖老师一起做点事情,为社区的大家服务 😃 今天想跟各位分享&#x…

重学SpringBoot3-SPI机制

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-SPI机制 什么是 SPI?Spring Boot 中的 SPI 机制spring.factories 文件自动配置的实现启动流程中的作用 SPI实际应用步骤 1: 新建模块步骤 2:…

[Java EE] 多线程(九):ReentrantLock,Semaphore,CountDownLatch与线程安全的集合类(多线程完结)

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (91平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …

一文读懂Python的`__init__`,`__init__`方法的终极指南

大家好,今天给大家介绍一个Python中一个特殊的函数__init__。 在Python中,__init__方法是一个特殊的函数,它在创建类的新实例时自动调用。它的作用类似于其他编程语言中的构造函数,用于初始化对象的状态。这篇文章将带你深入了解…

python实现的信号合成分析系统(DSP)

python实现的信号合成分析系统(DSP) 流程 1、在QT界面上设置好信号频率,采样频率,采样点数 2、使用np构建sin函数 3、使用matplotlib画出 4、分别分析合成信号的FFT频域信息1、效果图 2、示例代码 def btn_com_clicked(self):# 信号合成分析Fs = self.com_fs_edit_value #…

【网络编程】http协议

预备知识 什么是http协议 HTTP(Hypertext Transfer Protocol,超文本传输协议)是一个应用层的协议,用于在网络中传输超文本(如HTML文档)。HTTP协议建立在TCP/IP协议之上,是Web浏览器和Web服务器…

Map集合的实现类~HashMap

存储结构:哈希表 键重复依据是hashCode和equals方法(键不能重复) 添加: 先创建Student类,那么往HashSet添加的就是Student对象作为键值,后面的作为值 删除: 判断: 遍历&#xff1a…

为什么要梯度累积

文章目录 梯度累积什么是梯度累积如何理解理解梯度累积梯度累积的工作原理 梯度累积的数学原理梯度累积过程如何实现梯度累积 梯度累积的可视化 梯度累积 什么是梯度累积 随着深度学习模型变得越来越复杂,模型的训练通常需要更多的计算资源,特别是在训…

self-attention 的 CUDA 实现及优化 (上)

self-attention 的 CUDA 实现及优化 (上) 导 读 self-attention 是 Transformer 中最关键、最复杂的部分,也是 Transformer 优化的核心环节。理解 self-attention ,对于深入理解 Transformer 具有关键作用,本篇主要就围绕 self-attention 展…

java+jsp+Oracle+Tomcat 记账管理系统论文(完整版)

⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️ ➡️点击免费下载全套资料:源码、数据库、部署教程、论文、答辩ppt一条龙服务 ➡️有部署问题可私信联系 ⬆️⬆️⬆️​​​​​​​⬆️…

ThingsBoard版本控制配合Gitee实现版本控制

1、概述 2、架构 3、导出设置 4、仓库 5、同步策略 6、扩展 7、案例 7.1、首先需要在Giitee上创建对应同步到仓库地址 ​7.2、giit仓库只能在租户层面进行配置 7.3、 配置完成后:检查访问权限。显示已成功验证仓库访问!表示配置成功 7.4、添加设…