• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

关于sleep和随机数

9604a3b72d92b876 2019-04-14 浏览量:1097
我使用循环的时候,采用time(NULL)做种子生成随机数,如果sleep()不够大,rand()生成数都一样,有什么好方法规避吗?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • time取值为秒,所以sleep时间不够的时候,time取值相同,可以程序开始的时候只用一次srand(time)生成种子,之后每次单独调用,这样就能保证不会因为时间间隔过低取到相同种子,而每次rand的时候,虽然srand的值是一样,因为次数发生了变化(+1),因此取得的值也不同。
    • 发布于 2019-04-18
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:5
  • 你最好给出完整的代码才好看是否有问题

    srand(time( NULL ));

    rand();

    • 发布于2019-04-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 确实如果sleep间隔太短,而每次都设置srand(time( NULL ));可能取到一样的值,其实对于这种,只需要采用一次srand(time( NULL ));后面直接rand值就会不一样的。
    • 发布于2019-04-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以先调用用srand随机数函数,函数参数定时器产生,然后在调用rand函数在生成随机数
    • 发布于2019-04-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以把sleep的数据再乘以一个足够大的数据,这样数据够大了,rand的值也不一样了
    • 发布于2019-04-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 这种是随机数的种子太小,可以选个大一点的种子,比如用time(NULL)的两倍,三倍,这样就足够大,而且也是随机的

    • 发布于2019-04-17
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

关于sleep和随机数