因为有时我想要rand ()
生成超过32767的数字。是否有一种方法可以扩展rand()
的极限,从而为我的程序生成一个更大的随机数?一个例子:
#include <cstdlib>
using namespace std;
int main() {
srand(9439);
for(int i = 0; i < 15; i++){
cout << 1 + (rand() % 500000) << endl;
}
}
所以,结果不会超过32767。是否有办法让rand()
生成超过32767的随机数?
rand()
是一个C标准库函数,它返回一个介于0
和RAND_MAX
之间的整数,至少32767
,但可以变化。这取决于实施。我已经测试了你的代码,它的工作方式和你期望的一样。所以,在这种情况下,它可能与您的机器有关。
另外,正如一些人已经指出的,在c++中,你通常最好使用rand()
和srand()
,因为它们比较起来相当原始。
如果你必须使用rand()
,那么你可以调用它两次,并将两个32位的数字连接成一个64位的数字。
我的C生锈了,所以这是一个类似C的伪代码:
int64 bigRand;
int32 loHalf;
int32 hiHalf;
loHalf = rand();
hiHalf = rand();
bigRand = hiHalf;
bigRand = bigRand << 32; // bit shift left.
bigRand = bigRand + loHalf; // Fill in lower bits.
这使得bigRand
作为一个64位伪随机数具有原始rand()
的所有错误。