继我之前的问题“ Rand() 在 C 语言中是基于什么算法? ”之后,我想知道函数算法的原因是我想比较一下它与 RdRand 之间的速度差异。
我试图循环它一亿次并计算它的运行时间。
通常,使用硬件创建随机数(RdRand)会使其速度更快,但结果显示相反(Rand() 3sec VS RdRand 10sec)。
有人可以帮我解决这个问题吗?
太感谢了!
继我之前的问题“ Rand() 在 C 语言中是基于什么算法? ”之后,我想知道函数算法的原因是我想比较一下它与 RdRand 之间的速度差异。
我试图循环它一亿次并计算它的运行时间。
通常,使用硬件创建随机数(RdRand)会使其速度更快,但结果显示相反(Rand() 3sec VS RdRand 10sec)。
有人可以帮我解决这个问题吗?
太感谢了!
硬件方法并不总是比软件方法快。
你看这里可能会很有趣,这是 glibc 的 sin 函数与 Intel 的 fsin 指令相比,它在大多数情况下更准确、更快。
此外,每个实现都有自己的优缺点。RdRand 主要关注的是:
随机数生成器符合 NIST SP 800-90A、[4] FIPS 140-2 和 ANSI X9.82 等安全和加密标准。--- RdRand,维基百科
因此,您可以使用 RdRand 并确保它的安全性,而如果您需要快速随机生成并且安全性无关紧要。您可以简单地使用 glibc 的 rand()。