电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
问答
关于sleep和随机数
已解决
73482
个问题
已帮助
5993
位优秀工程师
关于sleep和随机数
9604a3b72d92b876
2019-04-14
浏览量:1097
我使用循环的时候,采用time(NULL)做种子生成随机数,如果sleep()不够大,rand()生成数都一样,有什么好方法规避吗?
显示全部
嵌入式
关注问题
写回答
0
0
收起
我来回答
上传资料:
选择文件
文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
9604a3b72d92b876
time取值为秒,所以sleep时间不够的时候,time取值相同,可以程序开始的时候只用一次srand(time)生成种子,之后每次单独调用,这样就能保证不会因为时间间隔过低取到相同种子,而每次rand的时候,虽然srand的值是一样,因为次数发生了变化(+1),因此取得的值也不同。
发布于
2019-04-18
举报
评论 0
0
0
其他答案
数量:
5
xdsnet
你最好给出完整的代码才好看是否有问题
srand(time( NULL ));
rand();
发布于
2019-04-14
举报
评论 0
0
0
xdsnet
确实如果sleep间隔太短,而每次都设置srand(time( NULL ));可能取到一样的值,其实对于这种,只需要采用一次srand(time( NULL ));后面直接rand值就会不一样的。
发布于
2019-04-14
举报
评论 0
0
0
yhj416606438
可以先调用用srand随机数函数,函数参数定时器产生,然后在调用rand函数在生成随机数
发布于
2019-04-14
举报
评论 0
0
0
这是经国
可以把sleep的数据再乘以一个足够大的数据,这样数据够大了,rand的值也不一样了
发布于
2019-04-14
举报
评论 0
0
0
chen0000009
这种是随机数的种子太小,可以选个大一点的种子,比如用time(NULL)的两倍,三倍,这样就足够大,而且也是随机的
发布于
2019-04-17
举报
评论 0
0
0
相关问题
问题达人
换一批
文章
知识经验换现金
换一批
关于sleep和随机数
写回答
关注问题
×
我要举报该内容,理由是:
内容质量差:
内容太水、伸手党
垃圾广告信息:
广告、招聘、推广、测试内容等
偏离问答主题:
与技术无关、讨论类
与社区已有内容重复:
违规内容:
色情、暴力、血腥、敏感信息等
不友善内容:
人事攻击、挑衅辱骂、恶意行为
以上选项都不是: