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

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://www.lryc.cn/news/342649.html

相关文章:

  • 万兆以太网MAC设计(12)万兆UDP协议栈上板与主机网卡通信
  • 2024年4月17日华为春招实习试题【三题】-题目+题解+在线评测,2024.4.17,华为机试
  • 展开说说:Android线程池解析
  • Selenium自动化测试面试题全家桶
  • Docker 容器日志占用空间过大解决办法
  • update_min_vruntime()流程图
  • 十进制转任意进制(以及任意进制来回转换<了解>)
  • postcss-px-to-viewport 从入坑到放弃 (nuxt3搭建响应式官网解决方案 )
  • C语言从入门到入门
  • Java基础教程 - 4 流程控制
  • 大厂Java面试题:MyBatis中有几种加载映射器(Mapper.xml)的方式?
  • Flutter笔记:Widgets Easier组件库(10)快速处理承若型对话
  • 10_Linux中的计划任务
  • Google Play开发者账号为什么会被封?如何解决关联账号问题?
  • (第12天)【leetcode题解】151、反转字符串中的单词
  • 如何处理多模态数据噪声不均衡动态?天大等最新《低质量数据的多模态融合》综述
  • Autosar NvM配置-手动配置Nvblock及使用-基于ETAS软件
  • 【c++算法篇】双指针(下)
  • 微图乐 多种装B截图一键制作工具(仅供娱乐交流)
  • 基于Springboot的点餐平台
  • C# 获取一个字符串中非数字部分?
  • 今日总结2024/5/7
  • 爬虫学习(3)豆瓣电影
  • GNU Radio创建FFT、IFFT C++ OOT块
  • 125.两两交换链表中的节点(力扣)
  • APP精准推送广告是怎么做到的?
  • RapidJSON介绍
  • 大型企业总分支多区域数据传输,效率为先还是安全为先?
  • C语言例题35、反向输出字符串(指针方式),例如:输入abcde,输出edcba
  • 场景文本检测识别学习 day09(Swin Transformer论文精读)