8位单片机很多地方需要随机数,比如游戏的洗牌,可在timer中取数,但是随机数质 X3=Jp'p$h
量不高。随机数是一个既简单又复杂的问题,这里的例子使用了众所周知的线性叠加法,没 /
-qt}
本文引用地址:欧时电子 ttq< )4
有完美的方法产生随机数,不过线性叠加法是一个合适的方法,彻底解决8位机随机数的问 xEZVsz
题。 ND9>`I5
伪随机数函数总是返回可预知的数字,像抛骰子,如果抛足够多次,那么我们得到了一 {6y.%ysU
个足够长的数字序列, ' /<b[
3,1,5,1,4,6,5,4,6,5,4,5,6,1,3,2,1,6,4,6,5,4,3,2,1,3,2,1,4,2,3,1,3...... [qD<U %Hi
如果从序列中一个接一个的取出数字,那么数字就看似随机。 q>.t~
问题的关键是从这序列的哪个点(数字)开始取数?这个开始的点(数字)叫做种子。 rB&j"p}Q
注意,如果从相同的点(种子)开始,将会得到相同的数字,这是因为我们是从固定的序 RJsG]`
列中取数字(所以叫伪随机)。但这却是一个有用的特性,我们可以每次从不同的点取数,即 <