迪文科技论坛

 找回密码
 立即注册
搜索
查看: 257|回复: 7

【提问】C51开发中乱数使用请教

[复制链接]

2

主题

9

回帖

89

积分

注册会员

Rank: 2

积分
89
发表于 2023-9-28 13:59:12 | 显示全部楼层 |阅读模式
本帖最后由 小奕奕ye 于 2023-9-28 14:06 编辑

请问要怎麽在C51开发中製作一个每3个月会自动变化的8位数密码呢?
目前我看网上的一些教程说可以利用头文件"stdlib.h"来处理,但代码设计出来后却无法改变其乱数(3个月转换这个我还没做)
#include "stdlib.h"
xdata u8  randomNum;
void    Main()
{                          
        Sys_Cpu_Init();
        while(1)
        {
           srand(TL0);
           randomNum = rand();
           write_dgus_vp(0x2000,(u8*)&randomNum,4);
         }
}
回复

使用道具 举报

17

主题

119

回帖

1337

积分

金牌会员

Rank: 6Rank: 6

积分
1337
QQ
发表于 2023-9-28 20:18:59 来自手机 | 显示全部楼层
[quote]小奕奕ye 发表于 2023-9-28 13:59
请问要怎麽在C51开发中製作一个每3个月会自动变化的8位数密码呢?
目前我看网上的一些教程说可以利用头文件

你把srand放在while语句的上面试试。
如果还不行,就开一个定时器,然后获取定时器的值。 TL0的值。感觉你这个TL0,应该是不变的,所以不会生成随机数。
回复

使用道具 举报

2

主题

9

回帖

89

积分

注册会员

Rank: 2

积分
89
 楼主| 发表于 2023-10-2 10:32:09 | 显示全部楼层
二哲科技 发表于 2023-9-28 20:18
[quote]小奕奕ye 发表于 2023-9-28 13:59
请问要怎麽在C51开发中製作一个每3个月会自动变化的8位数密码呢?
...

有的谢谢您,将它拿出while后就可以变换了,那我想知道为什麽拿出来就可以了呢?我目前的推测是因为在while迴圈中就不会再次跑到srand这样想是对的吗?
回复

使用道具 举报

17

主题

119

回帖

1337

积分

金牌会员

Rank: 6Rank: 6

积分
1337
QQ
发表于 2023-10-2 12:49:31 | 显示全部楼层
小奕奕ye 发表于 2023-10-2 10:32
有的谢谢您,将它拿出while后就可以变换了,那我想知道为什麽拿出来就可以了呢?我目前的推测是因为在while ...

因为你的TL0是一个固定值,每次都固定值的随机种子,出来的第一个值都是固定的。
二哲科技,欢迎联系,帮你解决问题,为你提供方案~
VX:erzhekeji
QQ:1002866443
回复

使用道具 举报

2

主题

9

回帖

89

积分

注册会员

Rank: 2

积分
89
 楼主| 发表于 2023-10-3 15:49:05 | 显示全部楼层
本帖最后由 小奕奕ye 于 2023-10-3 16:06 编辑
二哲科技 发表于 2023-10-2 12:49
因为你的TL0是一个固定值,每次都固定值的随机种子,出来的第一个值都是固定的。 ...

有的!我改用累加來換種子值以後就會改變了,我還想請問那要怎麼製作一個能隨機更改的種子值呢?(TL0不是計時器參數嗎?為什麼不會改變?)
回复

使用道具 举报

17

主题

119

回帖

1337

积分

金牌会员

Rank: 6Rank: 6

积分
1337
QQ
发表于 2023-10-4 09:42:36 | 显示全部楼层
小奕奕ye 发表于 2023-10-3 15:49
有的!我改用累加來換種子值以後就會改變了,我還想請問那要怎麼製作一個能隨機更改的種子值呢?(TL0不是計 ...

估计的定时器0并没有启动,所以TL0也不会改变。
二哲科技,欢迎联系,帮你解决问题,为你提供方案~
VX:erzhekeji
QQ:1002866443
回复

使用道具 举报

2

主题

9

回帖

89

积分

注册会员

Rank: 2

积分
89
 楼主| 发表于 2023-10-4 11:04:20 | 显示全部楼层
本帖最后由 小奕奕ye 于 2023-10-4 11:06 编辑

但是我加入這個定時器0後TL0仍無法使用耶,所以我才改用count來改變種子植

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

4

主题

37

回帖

201

积分

中级会员

Rank: 3Rank: 3

积分
201
发表于 2023-12-2 16:57:01 | 显示全部楼层
随机数,都需要引入一个“随机因子”,随机因子越随机,你的随机数才越随机。其实开启定时器的方法不是我很推荐的方法(比较容易出现相同机器出现固定值或者不同机器相同时间出现相同值等问题),最好是读读外部的ADC什么的。
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2025-5-9 22:04 , Processed in 0.042273 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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