社区首页 >问答首页 >生成大于32767的随机数问生成大于32767的随机数ENStack Overflow用户提问于 2015-03-07 00:33:50回答 2查看 2.8K关注 0票数 2我正试图为一个变量分配一个介于0到65535之间的数字,但我做不到,因为RAND_MAX设置为32767。如何生成大于32767的随机数,同时生成的随机数在0到65535之间?
c++random关注问题分享EN回答 2推荐最新Stack Overflow用户回答已采纳发布于 2015-03-07 00:44:04
如果您的编译器支持C++11,您可以这样做:
代码语言:javascript运行复制#include
#include
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';
}示例输出:
代码语言:javascript运行复制38198
49494
41521
10688
1262
51014
36094
16740
1212
59184收藏分享票数 6ENStack Overflow用户发布于 2015-03-07 00:42:23
我会尝试这样的方法:
代码语言:javascript运行复制int msb = (rand() % 2) << 15;
int random = msb | rand();也就是说,我生成两个随机数。第一个(msb)将设置第二个(随机)中最重要的比特。
收藏分享票数 5EN页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持原文链接:https://stackoverflow.com/questions/28909982
复制相关文章