rand VS mt19937
C++随机数 rand Vs mt19937
rand 和 mt19937 介绍
众所周知,程序无法模拟出真正的随机数,所以我们所说的随机数都是相对随机的伪随机数。
rand 是一种常用的随机数,C++ 初学者一般接触的都是他,但是他有缺点,随机性不高,周期短,质量低。
Mt19937 用法与 rand 一样但是他随机性高,周期长,质量高。
先放上进行实验对比的两个代码:
我们通过多次随机数(
- rand 随机数
- mt19937 随机数
Part 1 对比随机数的实时平均数(200次)
- Mt19937
- Rand
通过用眼睛直接看,我们可以感受到他们都逐渐趋于中间的一个数
此时,两个随机方法的区别都不大,都有不小的波动。
因为次数太少了。接下来,增大次数。
Part 2 对比随机数的实时平均数(10000次)
- Mt19937
- Rand
由此可见,前者大约在
而后者在
因此看得出来 Mt19937 更加稳定,也就是他的随机性更加分布均匀,更加“随机”。显然前者要优于后者。
Part 3 对比最后的平均数(10000000次)
我们对两个代码进行了
结果如下:
-
Mt19937
, , , 。
平均数: 。与理论答案相差 。- rand
平均数:
显然相差越小,随机数质量更高,因此 Mt19937 有优于rand。
虽然相差小,但是在 Sa 种有时候取决了你的程序是否通过。
如果想看 Sa,请看:
Part 4 对比最后的平均数(1000000000次)
这一次,我们进行了
mt19937 :
rand:
尽管次数很多很多,但是 rand 却依然保持在
总结
通过各种实验数据的对比,mt19937 的随机数质量远高于rand,所以我们在写代码或在写对拍的时候尽量用 mt19937,提高随机数质量。
v
__EOF__

本文链接:https://www.cnblogs.com/gsczl71/p/18132237.html
关于博主:GDSZ初一蒟蒻,明年拿下七级勾
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:gsczl71,转载请注明原文链接:https://www.cnblogs.com/gsczl71/p/18132237
gsczl71 AK IOI!RP = INF 2024年拿下七级勾!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」