单片机如何产生随机数

如题所述

仅靠算法是无法产生真正的随机数,但可以产生一个伪随机数的序列,要想产生真正的随机数,需要一些硬件辅助。比如一些专用的随机数发生器。当然也可以搭建一个小硬件来产生,利用单片机的内置时钟设为1M,外接一个用温度敏感电阻搭建一个特征频率10M的RC振荡电路,用慢时钟去采集快时钟,然后经过简单处理,就可以得到一个真正的随机数了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-14
其他的库函数SAND RAND都是伪随机数。
使用若干个一直运行的timer,作为随机源最好,不影响功耗没有多余开销。
AD也可以不过测量的源在某个时间内随机范围比较小,可以选不同的源,比如悬空的IO电平,VCC,或者内部温度,等等。
如果有外部输入可以把这个作为随机源,比如有用户按键盘,或者外部通信追问

有3个设备,需要各自产生不一样的随机数。如果用AD产生随机数,都处在初始化状态时,恐怕三个产生的随机数一样。

追答

3个设备是完全相同的设备么?

本回答被提问者采纳
第2个回答  2011-09-14
1)使用外置部真随机数发生器获取;
2)自已设计一个简单的随机数算法(例如,使用ADC采样晶振引脚的电压,然后结合环境温度,程序例程间的执行跳转合成一个随机数),实用性比较好;
3)使用现成的伪随机数函数;
相似回答