0

继我之前的问题“ Rand() 在 C 语言中是基于什么算法? ”之后,我想知道函数算法的原因是我想比较一下它与 RdRand 之间的速度差异。

我试图循环它一亿次并计算它的运行时间。

通常,使用硬件创建随机数(RdRand)会使其速度更快,但结果显示相反(Rand() 3sec VS RdRand 10sec)。

有人可以帮我解决这个问题吗?

太感谢了!

4

1 回答 1

2

硬件方法并不总是比软件方法快。

看这里可能会很有趣,这是 glibc 的 sin 函数与 Intel 的 fsin 指令相比,它在大多数情况下更准确、更快。

此外,每个实现都有自己的优缺点。RdRand 主要关注的是:

随机数生成器符合 NIST SP 800-90A、[4] FIPS 140-2 和 ANSI X9.82 等安全和加密标准。--- RdRand,维基百科

因此,您可以使用 RdRand 并确保它的安全性,而如果您需要快速随机生成并且安全性无关紧要。您可以简单地使用 glibc 的 rand()。

于 2015-05-13T04:29:31.137 回答