随机数,顾名思义,便是随机天生的一个数据。
随机数
举个例子,我们在一堆红豆中,随手抓一把红豆,那么手中这把红豆的粒数,便是一个随机数。

由于我们无法详细预判抓的这一把红豆详细多少粒,这个数据是随机的,不可预算的,故这种办法产生的数据,就叫随机数。
(2)随机数的用法
随机数,可用于做一些须要随机的事宜,如抽奖,掷骰子等。
同时,随机数也多用于大略的加密。通过随机天生的一个随机数,将一段须要加密的数据,进行一定的数据公式运算,然后发送出去,吸收方只要知道这段吸收到的数据中,哪一段是密钥随机数,哪一段是加密密文,就可以通过协定的公式反向运算,进行解密,就可以得到密文数据。
数据大略加密
二、天生随机数的方法(1)通过单片机计数器的办法
通过单片机计数器的办法声明一个16位的变量CNT,并将其放置于主循环while(1)中,让其自加,如
当单片机运行到某一须要随机数的时候,如按键触发某个功能,须要获取随机数,来作为加密的随机码时,这时正在自增变革的CNT变量,提取其尾数(CNT%10),就可以作为一个伪随机数。
在这里,可能会有一个疑问了,为何这个值可以作为随机数利用呢?缘故原由如下:
1)裸机跑单片机属于单线程运行办法,在主循环while(1){}中,循环一次所需韶光,是根据每次循环所实行的内容决定的,具有不愿定性;
2)当我们按下按键时,由于按下的韶光点是不愿定的,以是CNT变革了多少,也具有不愿定性;
3)由于单片机主频很高,在我们触发时,CNT已经递增了数千个值了,故截取数据时,CNT的尾数,也是不愿定性的。
因此,可以用该办法,来天生一个我们想要的随机数。
(2)通过ADC的办法
利用ADC的办法,采集芯片内部温度传感器的办法。来得到一个伪随机数。
我们自行测试能知道,单片机在通过ADC采集这个温度波形仿照旗子暗记时,该数值的尾数,变革是很随机的。而温度传感器,受到不同时候温度的影响时,该值的尾数变革也是不愿定的。
因此。我们可以通过该办法,来天生一个伪随机数。
ADC采集温度
(3)通过单片机自带的硬件随机数发生器的办法
有些单片机,集成了专有的硬件随机数发生器,通过获取该发生器的随机数值,即可得到一个空想的随机数。
如STM32F4 自带了硬件随机数发生器(RNG),RNG 处理器是一个以连续仿照噪声为根本的随机数发生器,在主机读数时供应一个32 位的随机数。
RNG发生器图