生成大于 32767 的随机数

Generate random number bigger than 32767

我正在尝试为变量分配一个介于 0 和 65535 之间的数字,但我不能,因为 RAND_MAX 设置为 32767。如何生成大于 32767 的随机数,并且在同时生成的数字可能在 0 到 65535 之间?

我会尝试这样的事情:

int msb = (rand() % 2) << 15;
int random = msb | rand();

也就是我生成两个随机数。第一个 (msb) 将设置第二个(随机)的最高有效位。

如果你的编译器支持 C++11 你可以这样做:

#include <iostream>
#include <random>

int main()
{
    std::random_device rd;
    std::default_random_engine eng {rd()};
    std::uniform_int_distribution<> dist(0, 65535);

    for(unsigned i = 0; i < 10; ++i)
        std::cout << dist(eng) << '\n';
}

示例输出:

38198
49494
41521
10688
1262
51014
36094
16740
1212
59184