导航:首页 > 操作系统 > 单片机随机数

单片机随机数

发布时间:2022-03-06 19:14:48

Ⅰ 51单片机产生随机数c程序

刚写的程序,我的思想是用定时器加rand()随机函数来实现的,单片机上电之后通过按键去启动取随机数,若是单片机上电就立即取随机数的话,那每次上电随机的结果都是一样的。然后是0到9不重复的随机数,程序中用了循环来判断是否和前面取的随机数相同,相同则进入下次取随机数,不同则存入数组。程序如下:#include<reg52.h>
#include<stdlib.h> //包含rand()随机函数的头文件
unsigned char t,k,i,j,a,f,n[10];
//t是计时变量,k是按键标志,i是数组下标,f是随机数重复标志,n[10]是存放随机数的数组
void init() //初始化函数
{
t=0;
i=0;
f=0;
k=0;
TMOD=0x02; //设置定时器0为工作方式2
TH0=7; //装初值
TL0=7;
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //启动定时0
EX0=1; //开外部中断0,同按键的效果一样
IT0=1; //下降沿触发
}
void main()
{
init();
while(1)
{
while(k) //外部中断0触发循环
{
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); //取随机数
for(j=0;j<i;j++) //与前面的随机数比较
{
if(n[j]==a) //与前面的随机数相同
f=1; //标志置1
}
if(f) //有重复执行
{
f=0; //标志清0
continue; //结束本次循环
}
n[i]=a; //不同则存入数组中
i++; //数组下标加1
}
}
}
}
void inter0() interrupt 0 //外部中断0
{
k=1; //按键标志置1,主函数执行取随机数
}
void time0() interrupt 1 //定时器0中断
{
t++; //时间加1
if(t==100) t=0;
}

Ⅱ 单片机C语言如何产生随机数

KEIL里面产生随机数的函数确实是rand(),但头文件是stdlib.h,不是time.h。

Ⅲ [请教高手]单片机怎么实现产生随机数

对于51单片机里有两个定时器/计数器,可以利用其中的一个来产生随机数。但要设置成方式2,自己计数状态。这样,只有8位数。但不要开中断,只要计数就行。需要时就读一次定时器的低8位就行了。
编程序,用定时器T1
MOV
TMOD,#20H
MOV
TH1,#0
MOV
TL1,#0
SETB
TR1
需要的时候,读TL1,是8位数
MOV
A,
TL1
如果需要16位数,可以对读出的8位数进行加或乘计算

Ⅳ 如何让STC单片机生成随机数

rnda=rand()%2;
rndb=rand()%3;

这样就可以了 。。不过要记得包含rand 函数的头文件

Ⅳ 如何在单片机中生成随机数

rnda=rand()%2;rndb=rand()%3;这样就可以了 。。不过要记得包含rand 函数的头文件

Ⅵ 51单片机用C语言产生一个100以内的随机数 怎么生成

C语言本身并不能产生随机数。
介绍一个比较简单的随机数获取方法:启动单片机的定时器,让它自己跑不要发生溢出中断,用户操作时直接读计数器数值,那基本上就是个随机数。

Ⅶ 求高手赐教:51单片机怎么产生随机数

启动定时器,需要随机数时从定时器里读一个值出来当作随机数。
或者调用random()函数,不过得到的是伪随机数。

Ⅷ 单片机如何产生随机数

其他的库函数SAND RAND都是伪随机数。
使用若干个一直运行的timer,作为随机源最好,不影响功耗没有多余开销。
AD也可以不过测量的源在某个时间内随机范围比较小,可以选不同的源,比如悬空的IO电平,VCC,或者内部温度,等等。
如果有外部输入可以把这个作为随机源,比如有用户按键盘,或者外部通信

Ⅸ 51单片机如何生成随机数

用定时器加rand()随机函数来实现。

rnda=rand()%2;

rndb=rand()%3;

单片机上电之后通过按键去启动取随机数,若是单片机上电就立即取随机数的话,那每次上电随机的结果都是一样的。然后是0到9不重复的随机数,程序中用了循环来判断是否和前面取的随机数相同,相同则进入下次取随机数,不同则存入数组。

在程序中,用“#include<absacc.h>”即可使用其中定义的宏来访问绝对地址,包括CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD

具体使用可看一看absacc.h便知,例如:

rval=CBYTE[0x0002];指向程序存贮器的0002h地址

rval=XWORD[0x0002];指向外RAM的0002h地址

_at_关键字

直接在数据定义后加上_at_ const即可,但是注意:

(1)绝对变量不能被初使化;

(2)bit型函数及变量不能用_at_指定。

例如:

idata struct link list _at_ 0x40;指定list结构从40h开始。

xdata char text[25b] _at_0xE000;指定text数组从0E000H开始

提示:如果外部绝对变量是I/O端口等可自行变化数据,需要使用volatile关键字进行描述,请参考absacc.h。

(9)单片机随机数扩展阅读:

统计学伪随机性。统计学伪随机性指的是在给定的随机比特流样本中,1的数量大致等于0的数量,同理,“10”“01”“00”“11”四者数量大致相等。类似的标准被称为统计学随机性。满足这类要求的数字在人类“一眼看上去”是随机的。

密码学安全伪随机性。其定义为,给定随机样本的一部分和随机算法,不能有效的演算出随机样本的剩余部分。

真随机性。其定义为随机样本不可重现。实际上只要给定边界条件,真随机数并不存在,可是如果产生一个真随机数样本的边界条件十分复杂且难以捕捉(比如计算机当地的本底辐射波动值),可以认为用这个方法演算出来了真随机数。

Ⅹ stm32单片机怎么获取随机数

举个例子:
srand(gSystickMsecCount); //gSystickMsecCount这个值是在Systick中断中计数的变量
for(i=0;i<7;i++){
number[i] = rand() % 100; //生成0—100内的随机整数
}

阅读全文

与单片机随机数相关的资料

热点内容
gps测量加密法 浏览:958
量价绝杀pdf 浏览:480
循环压缩机振动高的原因 浏览:396
教育机构网站源码 浏览:541
程序员租客被骗 浏览:397
安卓机用了三年会怎么样 浏览:294
图片怎么转pdf加密 浏览:448
解压缩软件免安装版 浏览:962
安卓短信如何存档 浏览:143
汽车导航不读文件夹 浏览:107
全球云服务器如何注册 浏览:884
udp直播流如何在服务器里播放器 浏览:591
macbrew安装php 浏览:425
点特征提取算法 浏览:502
python弹窗显示输入的文字 浏览:751
python数字和中文互转 浏览:639
汽车空调压缩机外壳 浏览:458
大型服务器都是采用什么模式 浏览:5
服务器为什么跳闸 浏览:398
怎么用python分析基金收益 浏览:990