加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C/C++的rand()如何快速生成随机数?

发布时间:2020-12-16 10:34:42 所属栏目:百科 来源:网络整理
导读:我的理解是伪随机数生成器基本上只需要一些数字(种子),用一堆XOR和位移散列它,然后吐出一个非常长的数字,从中可以检索余数以获得“随机” “号码. 现在,通常你会使用时间(NULL)作为C/C++中rand()的种子.但是,time(NULL)仅每秒递增一次,而不是每毫秒递增一次.
我的理解是伪随机数生成器基本上只需要一些数字(种子),用一堆XOR和位移散列它,然后吐出一个非常长的数字,从中可以检索余数以获得“随机” “号码.

现在,通常你会使用时间(NULL)作为C/C++中rand()的种子.但是,time(NULL)仅每秒递增一次,而不是每毫秒递增一次.那么,如果种子仍然是同一时间(NULL)值,那么如何在不到一秒的时间内在rand()上循环一千次并仍然得到不同的数字作为输出?

解决方法

rand()使用先前的随机值作为后续调用的新种子.这就是当您使用不同的种子值开始时将生成唯一的随机值序列的原因.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读