随机数表的读数规则,随机数表法读数规则

首页 > 实用技巧 > 作者:YD1662023-12-21 19:36:30

​一、什么是随机数?

(1)随机数是概念

随机数,顾名思义,就是随机生成的一个数据。

随机数表的读数规则,随机数表法读数规则(1)

随机数

举个例子,我们在一堆红豆中,随手抓一把红豆,那么手中这把红豆的粒数,就是一个随机数。

因为我们无法具体预判抓的这一把红豆具体多少粒,这个数据是随机的,不可预算的,故这种方式产生的数据,就叫随机数。

(2)随机数的用法

随机数,可用于做一些需要随机的事件,如抽奖,掷骰子等。

同时,随机数也多用于简单的加密。通过随机生成的一个随机数,将一段需要加密的数据,进行一定的数据公式运算,然后发送出去,接收方只要知道这段接收到的数据中,哪一段是密钥随机数,哪一段是加密密文,就可以通过协定的公式反向运算,进行解密,就可以获得密文数据。

随机数表的读数规则,随机数表法读数规则(2)

数据简单加密

二、生成随机数的方法

(1)通过单片机计数器的方式

通过单片机计数器的方式声明一个16位的变量CNT,并将其放置于主循环while(1)中,让其自加,如

随机数表的读数规则,随机数表法读数规则(3)

当单片机运行到某一需要随机数的时候,如按键触发某个功能,需要获取随机数,来作为加密的随机码时,这时正在自增变化的CNT变量,提取其尾数(CNT),就可以作为一个伪随机数。

在这里,可能会有一个疑问了,为何这个值可以作为随机数使用呢?原因如下:

1)裸机跑单片机属于单线程运行方式,在主循环while(1){}中,循环一次所需时间,是根据每次循环所执行的内容决定的,具有不确定性;

2)当我们按下按键时,由于按下的时间点是不确定的,所以CNT变化了多少,也具有不确定性;

3)由于单片机主频很高,在我们触发时,CNT已经递增了数千个值了,故截取数据时,CNT的尾数,也是不确定性的。

因此,可以用该方式,来生成一个我们想要的随机数。

(2)通过ADC的方式

使用ADC的方式,采集芯片内部温度传感器的方式。来获得一个伪随机数。

我们自行测试能知道,单片机在通过ADC采集这个温度波形模拟信号时,该数值的尾数,变化是很随机的。而温度传感器,受到不同时刻温度的影响时,该值的尾数变化也是不确定的。

因此。我们可以通过该方式,来生成一个伪随机数。

随机数表的读数规则,随机数表法读数规则(4)

ADC采集温度

(3)通过单片机自带的硬件随机数发生器的方式

有些单片机,集成了专有的硬件随机数发生器,通过获取该发生器的随机数值,即可得到一个理想的随机数。

如STM32F4 自带了硬件随机数发生器(RNG),RNG 处理器是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个32 位的随机数。

随机数表的读数规则,随机数表法读数规则(5)

RNG发生器图

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.