打印
[ZLG-ARM]

rand() 随机数无效,大家碰到过吗?

[复制链接]
2779|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nj21ic|  楼主 | 2011-9-25 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
rand() 随机数无效,大家碰到过吗?
在用iar arm 调试arm芯片时,发现每次启动程序后,几次执行rand()得到一组随机数都相同。例如
                   srand(1);
                   temp1=rand()%8;//得到temp1=2
                   temp2=rand()%8;//得到temp2=4
                   temp3=rand()%8;//得到temp3=1
每次启动后得到的结果都是这样2,4,1.从没变过?如何解决?

相关帖子

沙发
zhuyl456| | 2011-9-25 21:48 | 只看该作者
把那个srand();去掉就可以了

使用特权

评论回复
板凳
ppy521| | 2011-9-26 08:36 | 只看该作者
即使是把srand()去掉也没有用,同样得到这样的结果。
C语言产生的随机数都是伪随机数,每次上电产生的随机数肯定都是一样的。
唯一的办法是使用硬件随机数,比如:AD采样、温度等自然随机值。

使用特权

评论回复
地板
ppy521| | 2011-9-26 08:38 | 只看该作者
我的办法是上电时先使用AD采样悬空引脚,然后再用这个采样值初始化srand(),这样得到的就是真正的随机数。

使用特权

评论回复
5
ayb_ice| | 2011-9-26 11:40 | 只看该作者
本来就是伪的

使用特权

评论回复
6
daisyly| | 2011-9-26 15:41 | 只看该作者
就这样? 2# zhuyl456

使用特权

评论回复
7
ilovezeno| | 2011-9-26 20:01 | 只看该作者
你用一个seed,当然产生的随机数列是一样的了。。。。这个和伪不伪随机有啥关系哦。。。。
每次上电想办法给srend提供个随机种子,比如ad脚读数,那不就真随机了么。。。。

话说,很多人不学c就开始写程序了?都是神人阿。。。。

使用特权

评论回复
8
nj21ic|  楼主 | 2011-9-26 21:21 | 只看该作者
高人啊

使用特权

评论回复
9
nj21ic|  楼主 | 2011-9-26 21:21 | 只看该作者
高人啊

使用特权

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

本版积分规则

36

主题

315

帖子

5

粉丝