C++ std::正态分布运行时错误“整数除以零”

C++ std::正态分布运行时错误“整数除以零”,c++,random,std,normal-distribution,C++,Random,Std,Normal Distribution,从这个代码示例中,我得到运行时错误整数除以零。我唯一改变的是正态分布的类型,从double到int,以及它的平均值和标准偏差 任何建议?模板参数必须是浮点型浮点、双精度或长双精度。使用其他任何东西都会导致未定义的行为 由于正态分布是一种连续分布,所以当使用int类型时,您并不清楚期望它做什么。也许您可以通过使用正态分布并将结果四舍五入到int来获得想要的结果。模板参数必须是浮点型float、double或long double。使用其他任何东西都会导致未定义的行为 由于正态分布是一种连续分布,所

从这个代码示例中,我得到运行时错误整数除以零。我唯一改变的是正态分布的类型,从double到int,以及它的平均值和标准偏差

任何建议?

模板参数必须是浮点型浮点、双精度或长双精度。使用其他任何东西都会导致未定义的行为

由于正态分布是一种连续分布,所以当使用int类型时,您并不清楚期望它做什么。也许您可以通过使用正态分布并将结果四舍五入到int来获得想要的结果。

模板参数必须是浮点型float、double或long double。使用其他任何东西都会导致未定义的行为

由于正态分布是一种连续分布,所以当使用int类型时,您并不清楚期望它做什么。也许你可以通过使用正态分布并将结果四舍五入到整数来得到你想要的结果。

你可以使用默认概率值为0.5的二项式分布。

它将返回范围为[0,t]的整数值,如果t为偶数,则平均值为t/2,否则t+1/2,t-1/2的概率相等。。您可以相应地设置t的值,并在需要时通过向结果中添加常量进行移位

二项分布是正态分布的离散近似。正态分布理论上没有下限/上限

我更喜欢在原始包装上使用以下薄包装:

// construct a trivial random generator engine from a time-based seed:
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
std::default_random_engine generator (seed);

std::normal_distribution<int> distribution (132,20);

std::cout << "some Normal-distributed results:" << std::endl;
for (int i=0; i<10; ++i)
  std::cout << distribution(generator) << std::endl;
您可以使用默认概率值为0.5的二项分布。

它将返回范围为[0,t]的整数值,如果t为偶数,则平均值为t/2,否则t+1/2,t-1/2的概率相等。。您可以相应地设置t的值,并在需要时通过向结果中添加常量进行移位

二项分布是正态分布的离散近似。正态分布理论上没有下限/上限

我更喜欢在原始包装上使用以下薄包装:

// construct a trivial random generator engine from a time-based seed:
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
std::default_random_engine generator (seed);

std::normal_distribution<int> distribution (132,20);

std::cout << "some Normal-distributed results:" << std::endl;
for (int i=0; i<10; ++i)
  std::cout << distribution(generator) << std::endl;

从改成?像这样的句子有点刻薄,但不是标准的…:对不起,尖括号吃了我的类型@DevNoob:您可以将内联代码示例环绕在背景符号中以避免此类问题。从更改为?像这样的句子有点刻薄,但不是标准的…:对不起,尖括号吃了我的类型@DevNoob:您可以将内联代码示例放在背景符号中,以避免此类问题。使用int类型时,您并不清楚希望它做什么-您可以对任何接受的类型进行相同的论证,因为它们最终都是离散的。当使用int类型时,您并不清楚您期望它做什么-您可以对任何接受的类型进行相同的论证,因为它们最终都是离散的。