北京自己怎么做网站,电子上网站开发,河南省建设厅执业资格注册中心网站,广西企业建站ESP32-S3 内置的真随机数发生器#xff08;RNG#xff09;#x1f60e;
引言 #x1f4da;
在许多应用中#xff0c;随机数发生器#xff08;RNG#xff09;是必不可少的。无论是在密码学#x1f512;、游戏#x1f3ae;、模拟#x1f9ea;或其他领域#xff0c;随…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.hvoid 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))用于生成一个在MIN和MAX之间的随机数包括MIN和MAX。
让我们分解一下这个表达式 random % (MAX - MIN 1)会生成一个在0到MAX - MIN之间的随机数。例如如果MIN是10MAX是100那么MAX - MIN 1就是91而任何数除以91的余数都会在0到90之间所以这个表达式会生成一个在0到90之间的随机数。 MIN ...然后我们将上一步得到的随机数加上MIN。这样生成的随机数就在MIN和MAX之间了。
这个表达式可以确保生成的随机数在指定的范围内。这是一种常见的方法用于在给定范围内生成随机数。 结论
参考资料
ESP-IDF 随机数发生器
正点原子DNESP32S3 开发板教程-IDF 版
希望这篇博客对你有所帮助