Ortalama 0 ve sigma 1 ile normal bir dağıtma oluşturmak için boost :: normal_distribution kullanmaya çalışıyorum.Boost normal dağıtım sınıfları nasıl kullanılır?
Aşağıdaki kod, bazı değerler -1 ve 1'in üzerinde veya üstünde olduğu gibi çalışmıyor (ve olmamalı). Bir şey yanlış yaptığımı işaret edebilir mi? Benim makinede
#include <boost/random.hpp>
#include <boost/random/normal_distribution.hpp>
int main()
{
boost::mt19937 rng; // I don't seed it on purpouse (it's 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;
}
}
sonucudur:
0.213436
-0.49558
1.57538
-1.0592
1.83927
1.88577
0.604675
-0.365983
-0.578264
-0.634376
Eğer tüm değerler -1 ve 1.
şimdiden teşekkür ederiz arasındaki değildir görebileceğiniz gibi!
EDIT: Son teslim tarihleri olduğunda ve uygulamayı yapmadan önce teoriden kaçınmak istediğinizde olan şey budur.
Neredeyse tüm istatistiklerimi unuttum, ancak varyans (dağıtımın ctorunun ikinci parametresi olan) kesinlikle bir aralık için mutlak bir kesme belirtmiyor mu? İşlerin nasıl yayıldığının bir ölçüsüdür. –
@Neil Butterworth: Yapıcıdaki ikinci parametre standart sapmadır (varyansın karekökü). – jason
Eh, neredeyse her şeyi unuttuğumu söyledim! –