生成大于32767的随机数

Generate random number bigger than 32767

本文关键字:随机数 32767 大于      更新时间:2023-10-16

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

如果您的编译器支持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

我会尝试这样的东西:

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

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