按照我之前的问题“What algorithm is Rand() based on in C language?”,我想知道函数算法的原因是我想用RdRand比较它之间的速度差异。
我试着循环它1亿次并计算它的运行时间。
通常,使用硬件创建随机数(RdRand)会使其速度更快,但结果显示其他情况(Rand()3sec V.S. RdRand 10sec)。
有人可以帮我解决这个问题吗?
万分感谢!
答案 0 :(得分:2)
硬件方法并不总是比软件方法快。
对于look here,它的glibc的sin函数与英特尔的fsin指令相比,你可能感兴趣的是它在大多数情况下都更加准确和快速。
此外,每个实现都有自己的优点/缺点。 RdRand的主要关注点是:
随机数生成器符合安全和加密标准,如NIST SP 800-90A,[4] FIPS 140-2和ANSI X9.82。 --- RdRand, Wikipedia
因此,如果您需要快速随机生成并且安全性不是问题,那么您可以使用RdRand并确保其安全性。你可以简单地使用glibc的rand()。