[牛人杂谈] 单片机生成随机数的几个方法

[复制链接]
 楼主| 玛尼玛尼哄 发表于 2017-9-14 11:43 | 显示全部楼层 |阅读模式

单片机生成随机数的几种常用随机信号如下:

1. 用一路AD采集温度或电源噪声,取后几位作为随机信号;

2. 将用户的交互信号时间作为随机信号;

3. 利用时钟芯片或RTC获取当前时间再经处理作为随机信号;

4. 自己搭一个硬件电路用来产生随机信号,如利用单片机的内置时钟设为1M,外接一个用温度敏感电阻搭建一个特征频率10M的RC振荡电路,用慢时钟去采集快时钟,然后经过简单处理,就可以得到一个真正的随机数了


 楼主| 玛尼玛尼哄 发表于 2017-9-14 11:44 | 显示全部楼层
最简单的其实就是AD采集了,可以外接一个悬空的金属,或者PCB悬空的焊盘线,这样你可以测到该ADC,会一直在波动,,读取的值每次都不同,你可以用最后两位作为随机数。
 楼主| 玛尼玛尼哄 发表于 2017-9-14 11:45 | 显示全部楼层
交互信号这种需要你通过按键或者触摸等动作获取,比如定时器循环跑秒,你按键随机捕获其中的值。这种需要人工干预。。
 楼主| 玛尼玛尼哄 发表于 2017-9-14 11:46 | 显示全部楼层
还有就是通过时钟电路,RTC,这种可以根据时钟的偏差特性,并且在不同时间获取的值是不同的这一特点获取随机数
 楼主| 玛尼玛尼哄 发表于 2017-9-14 11:46 | 显示全部楼层
最后一种也是类似,不过我推荐第一种,用ADC这种,这种太随机了,,跟温度有关,跟环境有关,跟电磁噪声有关。。
mintspring 发表于 2017-9-17 09:38 来自手机 | 显示全部楼层
值得研究,要找个真正靠谱的方法
wahahaheihei 发表于 2017-9-17 21:21 | 显示全部楼层
感觉第一种最靠谱了。
gejigeji521 发表于 2017-9-17 21:28 | 显示全部楼层
根据经验,确实是第一种方法最好。
gejigeji521 发表于 2017-9-17 21:29 | 显示全部楼层
不过ADC要处理好了,才行,要有个随机特性做出来,自动感应波动强烈了才好
dongnanxibei 发表于 2017-9-17 21:31 | 显示全部楼层
总结的很全面,确实是这么多种,不过单片机如果要规划好了,可以用一路定时器提供定时,延时和随机数服务的。
zhuomuniao110 发表于 2017-9-17 21:33 | 显示全部楼层
第一种现象观察到过,回头试试
稳稳の幸福 发表于 2017-9-17 21:36 | 显示全部楼层
总结的好全面,第一次知道这么多方法。
yiyigirl2014 发表于 2017-9-17 21:38 | 显示全部楼层
面面俱到啊,不错的经验,如果给个单片机的例子就好了
wforest68 发表于 2017-9-30 13:28 | 显示全部楼层
我一般是取定时器时间加上ADC取值然后使用Hash算法计算出一个值,随机数的唯一性能保证
yiy 发表于 2017-10-1 19:55 | 显示全部楼层
方法十分新颖,测试一下,看看到底随机度,和采样频率如何。
598330983 发表于 2017-10-1 22:06 来自手机 | 显示全部楼层
主要先测量一个系统随机数最快生成的速度
捉虫天师 发表于 2017-10-3 19:30 来自手机 | 显示全部楼层
如果没有pcb和成本限制可以单独做个系统时钟电路,不仅可以提供定时功能还可以提供随机数生成
xixi2017 发表于 2017-10-4 10:47 | 显示全部楼层
方法好多,以前没想过还能这么玩,终于知道为何不让ADC悬空了。。会自动随机数。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

196

主题

3258

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部