找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1625|回复: 3
打印 上一主题 下一主题
收起左侧

有关STM32单片机随机数的问题想请教一下

[复制链接]
跳转到指定楼层
楼主
在stm32中产生一个随机数就是一句话的事,利用中断按键程序可以让它变化得产生随机数,那么如何让它可以隔一段时间自动产生不同的随机数自动变化得去显示呢



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:883242 发表于 2021-7-26 00:04 | 只看该作者
没什么好办法,C51里面随机函数是伪随机数,但是人类按键动作跟定时器运行是完全不相关的,所以以按键时定时器的值来做随机种子,伪随机算法一样可以获得真随机数。

但是你要定时自动生成,我就想不出能弄出真随机数的办法了。
回复

使用道具 举报

板凳
ID:57657 发表于 2021-7-26 00:11 | 只看该作者
随机数可以用哈希算法产生,比如md5、sha256,计算需要一定时间。
回复

使用道具 举报

地板
ID:123289 发表于 2021-7-26 08:59 | 只看该作者
告诉你,我在工作中采用的方法:
1、一定要基于一个随机的输入事件。只要是与IO口相连接的,输入无规律的都可以拿来作为随机事件。
2、建立一个高速循环计数器N。
3、建立一组随机数存储单元R[]用于储存随机数,数组数量由你根据需要而定。
4、每当IO发生输入事件时(输入是随机的),就将N存入R[]中,也是轮流循环复盖存储。
如此:R[]中的数字(或其中的几位,例如N是16位的,而你只要取0-127,则取其中的任意7位即可)就作为随机数,供你使用。
本方式的使用条件是:取随机数速率,小于IO随机事件发生的速率。
为何要用数组储存呢?偶尔两次取随机数间隔时间,会小于IO口输入事件的间隔时间。用数组可以先储存一些随机数(事件前产生的)。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表