【发布时间】:2015-07-24 03:53:30
【问题描述】:
在我之前的问题“What algorithm is Rand() based on in C language?”之后,我想知道函数算法的原因是我想比较它与RdRand的速度差异。
我尝试循环它一亿次并计算它的运行时间。
通常,使用硬件创建随机数 (RdRand) 会使其速度更快,但结果显示相反(Rand() 3sec V.S. RdRand 10sec)。
有人可以帮我解决这个问题吗?
谢谢一百万!
【问题讨论】:
-
当 RdRand 具有强大的加密能力并且 Rand 是一个简单的 LCG 计算时,为什么它会更快?
-
我不确定这是否是骗局,但无论如何它似乎都会包含您感兴趣的信息:stackoverflow.com/questions/26771329/…
-
这里有更多关于 RDRAND 性能的讨论:stackoverflow.com/questions/10484164/…
-
rand()的历史版本是一个非常差的线性同余生成器,其中低位特别远离随机。但它非常快:只是一个整数乘法、加法和位掩码。通常对于游戏来说已经足够了。否则不要使用它。 man7.org/linux/man-pages/man3/rand.3.html 有一些上下文。任何加密质量的 rng 都可能比 rand 慢很多,这仅仅是因为它做了更多的扰码工作。