C++ 如何生成0到0x7FFFFFFF的随机整数?
这不起作用:C++ 如何生成0到0x7FFFFFFF的随机整数?,c++,visual-studio,windows-10,C++,Visual Studio,Windows 10,这不起作用: for (int p = 0; p < 10; p++) { random_device rd; mt19937 gen(rd); uniform_real_distribution<int> dis(0, INT_MAX); printf("%i\n", dis(gen)); } for(int p=0;p如果你想把数字生成到0x7FFFFFF,你应该明确地把这个数字放进去,但是如果你想把数字取到max int 值,我建议使用
for (int p = 0; p < 10; p++) {
random_device rd;
mt19937 gen(rd);
uniform_real_distribution<int> dis(0, INT_MAX);
printf("%i\n", dis(gen));
}
for(int p=0;p<10;p++){
随机器件rd;
mt19937 gen(rd);
均匀实分布dis(0,INT_MAX);
printf(“%i\n”,dis(gen));
}
任何建议都将不胜感激。您的代码中几乎没有错误
random_设备的创建和播种mt19937
移动到for循环之外。我还建议对uniform\u real\u分布使用相同的方法
mt19937
接受seed notrandom\u device的构造函数值,因此您必须调用它来获取seed(rd()
)
统一整数分布
#包括
#包括
#包括
使用名称空间std;
int main(){
随机器件rd;
mt19937 gen(rd());
均匀分布图(0,标准::数值极限::max());
对于(int p=0;p<10;p++){
printf(“%i\n”,dis(gen));
}
返回0;
}
它不起作用,请您澄清一下好吗?它不编译,或者它运行但不做您想要的事情?你对10个整数的期望值是多少?不要在循环中为生成器重新设定种子。在循环中生成,将所有其他内容移出循环。并确保INT\u MAX
为0x7FFFFFFF,否则您可能会遇到另一个有趣的惊喜。此外,对于整数uniform\u real\u distribution
不是最佳选择<代码>统一内部分布是一个更好的选择。哦,当心。GCC的一些端口有非常糟糕的随机\u设备
实现。@user4581301是的。在严密的监督下,即使是尊敬的山也非常感谢你的帮助。