找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5760|回复: 6
收起左侧

C51编写一个延时函数 延时时间是0.0秒到5.0秒的随机时间

[复制链接]
ID:75803 发表于 2015-4-9 15:38 | 显示全部楼层 |阅读模式
要求每次调用这个延时函数时  延时的时间时变化的。变化范围在0.0秒到5.0秒之间。求源代码~~跪谢。OIZ
回复

使用道具 举报

ID:76299 发表于 2015-4-9 15:49 | 显示全部楼层
(1)rand()函数产生一个0到RAND_MAX之间的整数,产生的是伪随机数,RAND_MAX>=32767,

i=rand();

i=1+rand()%data//产生1—data之间的随机数


(2)srand()函数产生不同的随机数序列,unsigned类型整数作为参数为函数rand设置随机数种子,种子不同,rand()函数得到随机数就不同。

srand(unsigned int i);

e.g.

#include<stdlib.h>

#include<stdio.h>

main()

{

int i;

unsinged seed;

printf("Enter seed:");

sCANf(seed);//键盘输入种子值,把该值设置为随机数种子。

//srand(time(NULL));//使计算机读取其时钟值,把该值自动设置为随机数种子。

for(i=1;i<=50;i++)

printf("%d",1+rand()%6);//产生1—6的随机数

}
回复

使用道具 举报

ID:76299 发表于 2015-4-9 15:49 | 显示全部楼层
以上两种方法均可
回复

使用道具 举报

ID:75803 发表于 2015-4-9 15:53 | 显示全部楼层
用 rand 和 srand 实现一个 每次调用都不同的 随机数  然后用FOR循环延时 这样可以不?
回复

使用道具 举报

ID:76299 发表于 2015-4-9 15:56 | 显示全部楼层
当然可以 这样的话  for执行多少次 就产生了多少次随机数了。
回复

使用道具 举报

ID:75803 发表于 2015-4-9 16:00 | 显示全部楼层
wuxiandi 发表于 2015-4-9 15:49
以上两种方法均可

第一种方法不可以吧 是可以产生随机数了 可是每次调用的时候 随机数应该是一样的吧?第二种方法也不行啊, 还要键盘输入。
回复

使用道具 举报

ID:76299 发表于 2015-4-9 23:28 | 显示全部楼层
将每次生成的随机数存入EEPROM,下次初始化Srand时读EEPROM的值作为种子,能保证每次开机不出同样的随机数。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表