杰发科技AC7840——真随机数和伪随机数

0. 真随机数和伪随机数

1. CSE_DRV_InitRNG

CSE_DRV_InitRNG****初始化真随机数生成器

2. CSE_DRV_GenerateRND

CSE_DRV_GenerateRND****生成一个128bit真随机数,即16bytes

3. 随机数的重复概率

实测非常小,至少1000w次不会出现同一个值

cpp 复制代码
unsigned int count = 0;
int main(void)
{
    status_t Res;
    uint8_t RNG[16] = {0x00};
    uint8_t OldRNG[16] = {0x00};

    SystemClock_Config();
    InitDebug();
    printf("demo start...\r\n");

    FLASH_DRV_Init(&Flash1_InitConfig, &flash_Config);

    if (flash_Config.flexRAMSize == 0)
    {
        FLASH_DRV_UnlockCtrl();
        Res = FLASH_DRV_Partition(&flash_Config, 0x00, 0x03, 0);
        printf("FLASH_DRV_Partition,Res = 0x%x \r\n", Res);
        NVIC_SystemReset();
    }

    /*initialize CSE*/
    CSE_DRV_Init(&cse_State);

    /*initialize RNG*/
    Res = CSE_DRV_InitRNG();
    printf("CSE_DRV_InitRNG,Res = 0x%x \r\n", Res);

    Res = CSE_DRV_GenerateRND(OldRNG);
    unsigned int countflag = 1000000;
		unsigned int addTimes = 0;
    while (1)
    {
        Res = CSE_DRV_GenerateRND(RNG);

        for (int i = 0; i < 16; i++)
        {

            if (OldRNG[i] == RNG[i])
            {
                count++;
            }
            if (count >= 15)
            {
								printf("RNG: ");
                Numpy_Put(RNG, 16);
            }
        }
        count = 0;
        countflag--;
        if (countflag == 0)
        {
						addTimes++;
						printf("RNG 1000000 times :  addTimes %d \r\n",addTimes);
            countflag = 1000000;
        }
    }
}

4. CSE_DRV_ExtendSeed

此过程应该就是伪随机数了,因为人为操作了

5. 重复情况测试结果

没有扩展种子的测试结果

100 万次×130=130000000(即 1.3 亿)次没有重复值

100w次太快了,6s就算完了

改成1000w次

大概1分钟打印一次

加了扩展种子之后和没加的一起计时

从打印结果来看,加了扩展种子,计算1000w次大约1min40s,没加扩展种子大概1min4s

测试到今早,没有重复值

扩展种子之后413*1000w次无重复

没扩展种子的643*1000w次无重复

相关推荐
BBNbQKHXygfU2 天前
基于遗传算法优化BP神经网络的时间序列预测探索
mcu
想放学的刺客2 天前
单片机嵌入式试题(第30期)全局变量“满天飞“!!!局限性和影响有哪些,什么情况下才不得不使用?
单片机·嵌入式硬件·mcu·物联网·51单片机
网易独家音乐人Mike Zhou2 天前
【RealMCU】瑞昱官方LOG信息保存及解析,DebugAnalyzer自动化接收脚本(不需要用到ROM.trace文件)
单片机·mcu·物联网·自动化·嵌入式·iot·瑞昱
AIR-IT2 天前
国产ZYJ服务器RAID 5重建完整流程
服务器·国产·raid·浪潮
郝亚军5 天前
获取libiec61850和如何编译iec61850库
mcu·tcp/ip
liu_endong5 天前
杰发科技AC7840——打印所有GPIO的PORT配置寄存器
mcu·算法·杰发科技·autochips·车规芯片
想放学的刺客5 天前
单片机嵌入式系统试题(第28期)flash芯片各引脚作用?低功耗设计估算电池续航时间是多少?如何优化低功耗等项目经验
stm32·单片机·嵌入式硬件·mcu·物联网·51单片机
MickyCode7 天前
嵌入式开发调试之Traceback
arm开发·stm32·单片机·mcu
wotaifuzao8 天前
【Keil 5安装】keil 5最新版本安装+环境配置+下载百度资源分享(安装包,注册机等)
stm32·单片机·嵌入式硬件·mcu·学习·keil5·最新keil
帅次8 天前
系统分析师-信息物理系统分析与设计
stm32·单片机·嵌入式硬件·mcu·物联网·iot·rtdbs