Я пытаюсь использовать boost:: normal_distribution, чтобы генерировать нормальное распределение со средним 0 и сигмой 1.
Следующий код не работает, так как некоторые значения превышают или превышают -1 и 1 (и не должны быть). Может ли кто-нибудь указать, что я делаю неправильно?
#include <boost/random.hpp>
#include <boost/random/normal_distribution.hpp>
int main()
{
boost::mt19937 rng; // I don't seed it on purpouse (it not relevant)
boost::normal_distribution<> nd(0.0, 1.0);
boost::variate_generator<boost::mt19937&,
boost::normal_distribution<> > var_nor(rng, nd);
int i = 0; for (; i < 10; ++i)
{
double d = var_nor();
std::cout << d << std::endl;
}
}
Результат на моей машине:
0.213436
-0.49558
1.57538
-1.0592
1.83927
1.88577
0.604675
-0.365983
-0.578264
-0.634376
Как вы можете видеть, все значения не находятся между -1 и 1.
Спасибо всем заблаговременно!
РЕДАКТИРОВАТЬ. Это то, что происходит, когда у вас есть крайние сроки и не следует изучать теорию, прежде чем делать практику.