找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3087|回复: 14
收起左侧

为何单片机C语言产生的随机数总是固定数?

  [复制链接]
ID:825883 发表于 2020-10-25 08:08 | 显示全部楼层 |阅读模式
#include<reg51.h>
#include<stdlib.h>
sbit c=P2^0;
void main()
{
unsigned char a[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
P0=a[rand()%10];
c=0;
while (1)
        ;
}
以上是源程序,P0连接共阳数码管,P2.0控制数码管阳极,随机数函数产生一个随机数给P0,应该是每次数都不一样,现在是每次运行都产生7,无论重启还是开机。


回复

使用道具 举报

ID:275826 发表于 2020-10-25 09:34 | 显示全部楼层
还要播种呀
回复

使用道具 举报

ID:822755 发表于 2020-10-25 11:25 | 显示全部楼层
因为用的是伪随机数,随机数种子,每次开机都一样。要想办法每次开机能产生不同的随机种子。
srand(int )是设置随机数种子的。
回复

使用道具 举报

ID:825883 发表于 2020-10-25 11:54 | 显示全部楼层
KongQuan 发表于 2020-10-25 11:25
因为用的是伪随机数,随机数种子,每次开机都一样。要想办法每次开机能产生不同的随机种子。
srand(int ) ...

回复

使用道具 举报

ID:342954 发表于 2020-10-25 12:00 | 显示全部楼层
加一个时钟
回复

使用道具 举报

ID:638800 发表于 2020-10-25 13:47 | 显示全部楼层

1

1

2

2

3

3

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:213173 发表于 2020-10-25 16:33 | 显示全部楼层
楼主这样写程序根本看不出来数字变化,换一种方式写便于观察。
无标题.jpg

  1. #include<reg51.h>
  2. #include<stdlib.h>
  3. unsigned char a[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  4. unsigned int i;

  5. void main()
  6. {
  7.         while(1)
  8.         {
  9.                 P0=a[rand()%10];
  10.                 i=30000;
  11.                 while(i--);
  12.         }
  13. }
复制代码



回复

使用道具 举报

ID:420836 发表于 2020-10-26 05:04 | 显示全部楼层
这是一个很好的问题,我也从你们那里学到了。
回复

使用道具 举报

ID:440403 发表于 2020-10-26 07:25 | 显示全部楼层
我们程序产生的随机都是伪随机的,也就是需要一个东西来改变它,一般叫做随机数种子,高级语言一般使用系统时间作为随机数种子
回复

使用道具 举报

ID:86450 发表于 2020-10-26 08:19 | 显示全部楼层
伪随机
回复

使用道具 举报

ID:451718 发表于 2020-10-26 17:30 | 显示全部楼层
这么好的帖子,标记一下。 51黑有你更精彩!
回复

使用道具 举报

ID:831355 发表于 2020-10-27 10:52 | 显示全部楼层
伪随机数每次开机都一样,要使其产生不一样的种子,要用程序改变他
回复

使用道具 举报

ID:560467 发表于 2020-10-27 13:20 | 显示全部楼层
rand是伪随机数,你需要加入外部中断才能做到真正的随机数
回复

使用道具 举报

ID:639133 发表于 2020-10-27 16:50 | 显示全部楼层
要放随机数种子srand((unsigned) time(NULL) );的,放了就是根据时间的随机
回复

使用道具 举报

ID:828160 发表于 2020-10-27 21:21 | 显示全部楼层
我也挺让人 发表于 2020-10-27 16:50
要放随机数种子srand((unsigned) time(NULL) );的,放了就是根据时间的随机

时间是固定的,不是随机,用AD测空气,这样才是随机
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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