单片机C语言如何产生随机数
想用keill写个产生0-9的随机数的程序用在C51单片机里,但是它不能识别time.h头文件,rand函数。请高手帮帮忙啊,谢过!急啊...
想用keill 写个产生0-9的随机数的程序用在C51单片机里,但是它不能识别time.h头文件,rand函数。请高手帮帮忙啊,谢过!急啊
展开
展开全部
1、C语言提供了一些库函数来实现随机数的产生。C语言中有三个通用的随机数发生器,分别为 rand函数, random函数, randomize 函数
2、但是rand函数产生的并不是真意正义上的随机数,是一个伪随机数,是根据一个数,称之为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a)。
3、在调用rand函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。一般用for语句来设置种子的个数。
2、但是rand函数产生的并不是真意正义上的随机数,是一个伪随机数,是根据一个数,称之为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a)。
3、在调用rand函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。一般用for语句来设置种子的个数。
2012-02-09
展开全部
奢侈,浪费,乘除取余在8位的单片机中都好费时间和代码,再搞个rand 函数太奢侈了啊
C52中带AD的话,倒是可以模似出随机来,
思路是指定一个脚为AD输入口,并启动AD功能,同时这个接脚置反或不停的置1置0,待转换完成了取转换结果, 理论上讲,跳变中的电位应当是比较随机的值.
C52中带AD的话,倒是可以模似出随机来,
思路是指定一个脚为AD输入口,并启动AD功能,同时这个接脚置反或不停的置1置0,待转换完成了取转换结果, 理论上讲,跳变中的电位应当是比较随机的值.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
KEIL里面产生随机数的函数确实是rand(),但头文件是stdlib.h,不是time.h。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
keil本身是不带time.h头文件的,除非你自己构造一个。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
time.h头文件是利用PC机的系统时间,而单片机没有,需要用定时器来模拟。在C51中rand函数是有的,包含stdlib.h头文件就可以调用了。下面是我之前回答过的问题,跟你的问题很类似。http://wenwen.soso.com/z/q213187811.htm如有什么不清楚欢迎追问!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询