99问答网
所有问题
单片机如何产生随机数
如题所述
举报该问题
推荐答案 2011-09-14
仅靠算法是无法产生真正的随机数,但可以产生一个伪随机数的序列,要想产生真正的随机数,需要一些硬件辅助。比如一些专用的随机数发生器。当然也可以搭建一个小硬件来产生,利用单片机的内置时钟设为1M,外接一个用温度敏感电阻搭建一个特征频率10M的RC振荡电路,用慢时钟去采集快时钟,然后经过简单处理,就可以得到一个真正的随机数了。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://99.wendadaohang.com/zd/zWjWjtBO7.html
其他回答
第1个回答 2011-09-14
其他的库函数SAND RAND都是伪随机数。
使用若干个一直运行的timer,作为随机源最好,不影响功耗没有多余开销。
AD也可以不过测量的源在某个时间内随机范围比较小,可以选不同的源,比如悬空的IO电平,VCC,或者内部温度,等等。
如果有外部输入可以把这个作为随机源,比如有用户按键盘,或者外部通信
追问
有3个设备,需要各自产生不一样的随机数。如果用AD产生随机数,都处在初始化状态时,恐怕三个产生的随机数一样。
追答
3个设备是完全相同的设备么?
本回答被提问者采纳
第2个回答 2011-09-14
1)使用外置部真随机数发生器获取;
2)自已设计一个简单的随机数算法(例如,使用ADC采样晶振引脚的电压,然后结合环境温度,程序例程间的执行跳转合成一个随机数),实用性比较好;
3)使用现成的伪随机数函数;
相似回答
51
单片机如何
生成
随机数
?
答:
单片机上电之后通过按键去启动取随机数
,若是单片机上电就立即取随机数的话,那每次上电随机的结果都是一样的。然后是0到9不重复的随机数,程序中用了循环来判断是否和前面取的随机数相同,相同则进入下次取随机数,不同则存入数组。在程序中,用“#include<absacc.h>”即可使用其中定义的宏来访问绝...
51
单片机产生随机数
c程序
答:
if(!i) //i=0时取第一个
随机数
放入数组n[0]{ srand(t); //随机数初始化 a=(char)(rand()%10); //取随机数(0~9)n[0]=a; //存入数组 i++; //数组下标加1 } else while(i<10) //存放剩下的9个随机数 { srand(t); //随机数初始化 a=(char)(rand()%10); //...
用51
单片机
汇编语音
随机产生
一个1~33的
随机数
, 或者不能重复,能显示...
答:
初始化一个8位的定时器,让它自己从0开始加,不用设置中断,每隔一定时间去就读一次定时器的值t,那么t是
随机
的(0<=t<=255),然后t=t mod 34,
产生
0~33的一个数,是0就放弃重新取值,就可以达到目的
[请教高手]
单片机
怎么实现
产生随机数
?
答:
没 有完美的方法产生随机数,
不过线性叠加法是一个合适的方法
,彻底解决8位机随机数的问 题。 伪随机数函数总是返回可预知的数字,像抛骰子,如果抛足够多次,那么我们得到了一 个足够长的数字序列, 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,...
怎么将一个
随机数
送到
单片机
的输出口?让单片机此输出端口
产生
一个随机数...
答:
一开机,RAM中都是
随机数
。然后取一个单元(如30H),以它作指针,输出指向的单元,然后再根据随机生成公式,生成一串伪随机数。指针的目的是增大随机性。以下是我写的说明性的程序,可以自己改。org 0h mov a,30h anl a,#7FH;防止指向高128字节。mov r0,a mov a,@r0 loop:mov b,#9 mul ...
51
单片机
用c语言怎么让i得到一个0-15的
随机数
答:
启动计数器0,将TL0的值%16即可得到!static unsigned char random=5; //再次运行时值已改变。char i;TMOD= 0x20;TR0 =1;for(i=0;i<random; i++);//运行一段时间 ramdom *= TH0;random %=16;
51
单片机
用C语言
产生
一个100以内的
随机数
怎么生成?
答:
C语言本身并不能
产生随机数
。介绍一个比较简单的随机数获取方法:启动
单片机
的定时器,让它自己跑不要发生溢出中断,用户操作时直接读计数器数值,那基本上就是个随机数。
单片机
c语言
如何
用定时器得到
随机数
答:
keil c中有生成
随机数
的函数,可以直接调用。
求52
单片机
用C语言
产生随机数
的程序
答:
include include int main(void){ int i;int dat = 123;srand(dat);//这里的参数你要使用的话最好用日期,调用了这个函数,下面的rand函数产生的随机数就不会///每次一样,其实就是先产生一个种子 i = rand();//
产生随机数
,如果不调用srand(dat),这个函数每次调用产生的随机数是一样的 } ...
大家正在搜
单片机生成随机数
c语言生成1~100随机数
单片机编程随机触发
单片机1到10随机数代码
单片机随机数原理
51单片机随机数产生函数
单片机随机数种子
为什么编程不能做到真随机
伪随机数是什么意思
相关问题
如何用单片机产生随机数
单片机C语言如何产生随机数
[请教高手]单片机怎么实现产生随机数?
51单片机如何生成随机数?
求高手赐教:51单片机怎么产生随机数?
如何让STC单片机生成随机数
51单片机产生随机数c程序
怎么让51单片机产生随机数?