请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【NUCLEO-U083RC评测】+真随机数测试

[复制链接]
STMWoodData 发布时间:2024-5-26 23:11

STM32U083内置有一个真随机数发生器。下面就来测测真随机数是不是真随机。

首先使能RNG外设。设置很简单使能就行。

image.png

下面就是获取随机数测试:

image.png

首先是每次上电启动获取随机数,看看每次随机数是否相同:

image.png

可以看到每次启动获取的随机数都不相同。不像伪随机数,需要初始设置不同随机数种子,否则随机数相同。

下面是通过命令方便获取随机数:

#include "stdlib.h"
#include "nr_micro_shell.h"
void rand_data(char argc, char *argv)
{
    uint32_t    count;
    uint32_t    number;
    uint32_t    i,dat,cur_cnt;


    printf("random data test:\r\n");
    printf("Usage:rand [count] [rate percent] eg:rand 10000 20\r\n");
    printf("Usage:rand \r\n");
    if (argc > 2)
    {
        count = atoi(&argv[argv[1]]);   //
        number = atoi(&argv[argv[2]]);  //number
        cur_cnt = 0;
        for(i=0;i<count;i++)
        {
            HAL_RNG_GenerateRandomNumber(&hrng, &dat);
            if((dat % 100) < number)
            {
                cur_cnt ++ ;
            }
        }
        printf("Rate=%u.(%u < %u)\n",cur_cnt,count,number);
        printf("Rate=%0.2f%%\n",(100.0*cur_cnt)/count);
    }else
    {
        HAL_RNG_GenerateRandomNumber(&hrng, &dat);
        printf("Random Data = %0X\r\n",dat);
    }
}
NR_SHELL_CMD_EXPORT(rand,   rand_data,     "random data test");

上面可以获取随机数,也可以测试多次随机数获取百分比概率。

image.png

上面测试了一下随机0-99范围的数10000次,随机数小于20的次数。可以看到结果在20%概率左右。效果还是不错的。

image.png

收藏 评论0 发布时间:2024-5-26 23:11

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版