我试图准确地为一个变量分配0到65535之间的数字,但我不能因为RAND_MAX设置为32767.如何生成一个大于32767的随机数,同时生成的数字可能是在0到65535之间?
我会尝试这样的事情:
int msb = (rand() % 2) << 15;
int random = msb | rand();
Run Code Online (Sandbox Code Playgroud)
也就是说,我生成两个随机数。第一个(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';
}
Run Code Online (Sandbox Code Playgroud)
样本输出:
38198
49494
41521
10688
1262
51014
36094
16740
1212
59184
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1548 次 |
| 最近记录: |