打印

想产生一个随机数

[复制链接]
5933|36
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qq604847322|  楼主 | 2014-7-25 17:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
srand((unsigned int)time(0));
int n = rand();
一直提示  error[499];0.undefined symbol:time_(1826.obj)
能帮忙解决下吗
沙发
lcofjp| | 2014-7-25 17:53 | 只看该作者
估计是没有time函数的定义。

使用特权

评论回复
板凳
qq604847322|  楼主 | 2014-7-26 09:08 | 只看该作者
time.h里面有看到定义   会不会是因为芯片没有系统时间

使用特权

评论回复
地板
qq604847322|  楼主 | 2014-7-26 09:09 | 只看该作者
lcofjp 发表于 2014-7-25 17:53
估计是没有time函数的定义。

time.h里面有看到定义   会不会是因为芯片没有系统时间

使用特权

评论回复
5
yklstudent| | 2014-7-26 09:31 | 只看该作者
qq604847322 发表于 2014-7-26 09:09
time.h里面有看到定义   会不会是因为芯片没有系统时间

你以为是电脑呢 还系统时间
你不写 芯片哪来的系统时间

使用特权

评论回复
6
qq604847322|  楼主 | 2014-7-26 09:44 | 只看该作者
yklstudent 发表于 2014-7-26 09:31
你以为是电脑呢 还系统时间
你不写 芯片哪来的系统时间

pic16f1826  可以写系统时间吗?

使用特权

评论回复
7
MOn51| | 2014-7-27 15:18 | 只看该作者
如果有AD,你就用AD检测一个零票值做随机数的种子。

使用特权

评论回复
8
yewuyi| | 2014-7-28 09:09 | 只看该作者
MOn51 发表于 2014-7-27 15:18
如果有AD,你就用AD检测一个零票值做随机数的种子。

那你估计很希望,MCHP的AD零漂值还是比较稳定的。

使用特权

评论回复
9
yewuyi| | 2014-7-28 09:10 | 只看该作者
qq604847322 发表于 2014-7-26 09:44
pic16f1826  可以写系统时间吗?

这要问你自己的代码啊。

使用特权

评论回复
10
MOn51| | 2014-7-28 09:19 | 只看该作者
yewuyi 发表于 2014-7-28 09:09
那你估计很希望,MCHP的AD零漂值还是比较稳定的。

用AD检测电源的零飘,噪音都是有的。直取第8位即可!

使用特权

评论回复
11
yewuyi| | 2014-7-28 09:25 | 只看该作者
MOn51 发表于 2014-7-28 09:19
用AD检测电源的零飘,噪音都是有的。直取第8位即可!

有按键的,直接采集按键触发时的计数器数字做种子,因为每次按键触发事件是随机的,种子也就随机了。

ADC就要浪费一路了。

而且ADC的话,虽然有波动,但终究波动值比较小,人为压缩了随机的范围。

使用特权

评论回复
12
yewuyi| | 2014-7-28 09:25 | 只看该作者
MOn51 发表于 2014-7-28 09:19
用AD检测电源的零飘,噪音都是有的。直取第8位即可!

有按键的,直接采集按键触发时的计数器数字做种子,因为每次按键触发事件是随机的,种子也就随机了。

ADC就要浪费一路了。

而且ADC的话,虽然有波动,但终究波动值比较小,人为压缩了随机的范围。

使用特权

评论回复
13
MOn51| | 2014-7-28 09:32 | 只看该作者
产生随机数,有时是上电就要产生。按键计数必须要人为干预,还可以用噪音二极管(普通二极管效果也可以),电路复杂了。
ADC采集的漂移,如果觉得范围小,可以连续采集4次,合并得到32位。

使用特权

评论回复
14
qq604847322|  楼主 | 2014-7-28 09:55 | 只看该作者
yewuyi 发表于 2014-7-28 09:25
有按键的,直接采集按键触发时的计数器数字做种子,因为每次按键触发事件是随机的,种子也就随机了。

AD ...

有按键的  这办法操作比较简单  谢谢啊

使用特权

评论回复
15
yewuyi| | 2014-7-28 09:57 | 只看该作者
MOn51 发表于 2014-7-28 09:32
产生随机数,有时是上电就要产生。按键计数必须要人为干预,还可以用噪音二极管(普通二极管效果也可以), ...

呵呵,采集的白噪声被多次累加后,数值波动范围更加小。

使用特权

评论回复
16
qq604847322|  楼主 | 2014-7-28 10:00 | 只看该作者
MOn51 发表于 2014-7-27 15:18
如果有AD,你就用AD检测一个零票值做随机数的种子。

没用AD  谢谢回复:handshake

使用特权

评论回复
17
qq604847322|  楼主 | 2014-7-28 10:00 | 只看该作者
MOn51 发表于 2014-7-27 15:18
如果有AD,你就用AD检测一个零票值做随机数的种子。

没有AD    谢谢回复:handshake

使用特权

评论回复
18
MOn51| | 2014-7-28 10:14 | 只看该作者
yewuyi 发表于 2014-7-28 09:57
呵呵,采集的白噪声被多次累加后,数值波动范围更加小。

为何要累加?用:移位或放到32位数据上面。 AD0<<24 | AD1<<16 | AD2<<8 | AD3;

使用特权

评论回复
19
yewuyi| | 2014-7-28 10:16 | 只看该作者
MOn51 发表于 2014-7-28 10:14
为何要累加?用:移位或放到32位数据上面。 AD0

这个我没有推导,但直觉好像还是有些问题。

使用特权

评论回复
20
MOn51| | 2014-7-28 10:23 | 只看该作者
yewuyi 发表于 2014-7-28 10:16
这个我没有推导,但直觉好像还是有些问题。

这种方法我们用了快12年了。一直好用,如果觉得数据宽度还不够,可以整合到48位,64位。现在在STM32F405,我们还加入了MD5算法处理。pic的定时只有8位 或16位,数据宽度不够,关键是PIC的定时器少了,没有多余的定时器来做这个。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

16

帖子

0

粉丝