如何在C ++ 11中创建正常的整数分布?

时间:2014-02-25 13:44:13

标签: c++ c++11 random

正态分布:     std::normal_distribution<T> 只接受floatdouble等实值类型,为什么不接受整数类型?

如何创建正常的整数分布?

2 个答案:

答案 0 :(得分:12)

我对C ++ 11几乎一无所知,但我知道一点点数学(或者我在某一点上做过),离散正态分布称为Binomial distribution。事实上,当你让n进入无穷大时,正态分布就是二项分布。

因此,假设C ++ 11具有二项分布,那么您就具有离散的正态分布。 你为什么不试试std::binomial_distribution

您可能还想阅读de Moivre–Laplace theorem

enter image description here

答案 1 :(得分:-1)

将生成的随机值转换为整数。

std::normal_distribution<float> noise(0, 2.f);
randomValue = (int) round(noise(engine));