微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 用ATmega16单片机把某个范围内的点全部随机不重复输出

用ATmega16单片机把某个范围内的点全部随机不重复输出

时间:10-02 整理:3721RD 点击:
各位好,
坐标系所示,用ATmega16单片机把某个范围内的点全部随机不重复输出,比如说圆形、椭圆形、六边形(如图所示)、三角形,把图形范围内的点全部随机不重复地输出,有什么算法呢?并且形状大小可调的。

坐标系


首先,你要获得随机数种子,由于单片机功能较弱,软件做随机数不好使
介绍一种我用的随机加密方法,用一路悬空的ADC脚,配置打开ADC功能,读取采样值,则最低的几位一般是随机波动的
读取AD的采样值,取最低几位,如一个字节作为随机数据
有了随机种子,再来看你这个算法
我说一个简单的,立方体,长宽高分别为L、W、H
获取三个AD的随机值,A、B、C
A、B、C不一定落在L、W、H之内,也许大很多
则输出坐标就是(A%L, B%W, C%H),取余之后,就全部落在范围之内了
其他形状,你要根据其函数,计算好坐标范围,这些就是数学的范畴了,你得自己好好算算
所以说数学系的人编程猛就是这个道理

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top