生成 32 位随机数时出现问题
problems generating 32 bit random numbers
我想在指定范围之间生成一个随机数,但是当我运行以下代码时。 它给出了错误,任何人都可以解释错误吗?
#include <iostream>
#include <random>
using namespace std;
unsigned long int starting=2347483648;
unsigned long int ending=3994967296;
unsigned int rand(unsigned long int first,unsigned long int last)
{
std::random_device rd;
std::mt19937 eng(rd());
std::uniform_int_distribution<> distr(first, last);
return (unsigned int)distr(eng) << ' ';
}
int main()
{
cout<<rand(1,ending);//generate random number in this range
}
程序中断并给出错误
无效的最小和最大参数uniform_int
解释错误的原因,并告诉我如何在上述指定范围之间生成随机数
试试这个:
std::uniform_int_distribution<unsigned long int> distr(first, last);
return (unsigned int)distr(eng);
}
我还删除了错误<< ' '
,该使用空格字符左移,而不是在输出后附加空格。
int main()
{
cout<<rand(1,ending) << " ";
}
当ending
(或最后一个)转换为 int 时,它变为 -300000000
。 ending
也变得max()
distr,所以ending
== distr.max()
.使用 std::numeric_limits<int>::min()
,我们可以看到结果值可以适合 int。
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 整数不会重复超过随机数
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- Rand() 没有显示随机数,请帮助我了解出了什么问题:)
- 随机数有问题
- 生成 32 位随机数时出现问题
- 有关使用 boost 生成正常随机数的问题
- 类中的随机数生成器出现问题
- C++循环中调用伪随机数生成器函数 - 常量种子问题
- 在没有参数的情况下调用构造函数时生成随机数的问题
- 生成随机数并插入已包含n个数的数组时出现性能问题
- 在Mac上使用Xcode用c++生成随机数的问题
- c++中随机数的播种问题
- 产生随机数的问题
- 用CUDA通过拒绝方法生成随机数.性能问题