Sto cercando di utilizzare boost :: normal_distribution per generare una distribuzione normale con media 0 e sigma 1.Come utilizzare le normali classi di distribuzione?
Il seguente codice non funziona poiché alcuni valori sono superiori o superiori a -1 e 1 (e non dovrebbe essere). Qualcuno potrebbe far notare cosa sto facendo male?
#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;
}
}
Il risultato sulla mia macchina è:
0.213436
-0.49558
1.57538
-1.0592
1.83927
1.88577
0.604675
-0.365983
-0.578264
-0.634376
Come si può vedere tutti i valori non sono tra -1 e 1.
Grazie a tutti in anticipo!
EDIT: Questo è ciò che accade quando si hanno scadenze ed evitare di studiare la teoria prima di fare la pratica.
Ho dimenticato quasi tutte le mie statistiche, ma la varianza (che è il secondo parametro del sistema di distribuzione) sicuramente non specifica un valore assoluto per un intervallo? È una misura di come sono diffuse le cose. –
@Neil Butterworth: il secondo parametro nel costruttore è la deviazione standard (radice quadrata della varianza). – jason
Bene, ho detto che avevo dimenticato quasi tutto! –