如何在 c++ 中生成随机 32 位整数

How to generate random 32bit integers in c++

本文关键字:随机 整数 c++      更新时间:2023-10-16

我的理解是RAND_MAX取决于机器的架构。如果机器是 32 位,那么 rand() 只会生成最多 4 字节的东西。如何使用 rand() 在 32 位机器上生成 64 位随机整数?

另外,如果我想稍后使用 rand() 生成数十亿个随机整数,我总是需要 srand() 吗?

严重不鼓励将 rand() 与 bit-hacking 一起使用,因为在许多情况下它可能会导致随机性问题。

c++11 <random> 标头定义了生成任何类型的高质量随机数所需的所有工具,包括任何长度的整数、浮点数等......

我建议看这个:https://channel9.msdn.com/Events/GoingNative/2013/rand-Considered-Harmful

由于您已经在使用 rand(),您可能不必担心句点,因此您可以屏蔽上位。

通常,您应该在程序的顶部执行类似srand(time(NULL))一次的操作。 否则,每次运行程序时,都将生成相同的十亿个随机数序列。