2011-10-26 11 views
6

Me gustaría inicializar boost::random::discrete_distribution con std::vector<double>.Cómo inicializar boost :: random :: discrete_distribution usando std :: vector?

Mi problema es que si inicializarlo con una matriz, como en el ejemplo oficial:

double probabilities[] = { 
    0.5, 0.1, 0.1, 0.1, 0.1, 0.1 
}; 
boost::random::discrete_distribution<> dist(probabilities); 

entonces funciona perfectamente.

Sin embargo, si lo inicializo con un std::vector, entonces se comporta como si tuviera solo un elemento con probabilidad 1.0.

¿Puede decirme cuál es la forma correcta de inicializar un boost::random::discrete_distribution<> con un vector?

Respuesta

10

La clase parece tener un constructor que takes an iterator range. Esto se usaría con un vector como este:

std::vector<double> probs = ...; 
boost::random::discrete_distribution<> dist(probs.begin(), probs.end()); 
+0

¿sabes cómo solucionarlo? [link] (https://stackoverflow.com/questions/48013802/how-to-set-a-vector-of-discrete-distribution-c) Es casi lo mismo, pero con un vector de distribuciones. –

Cuestiones relacionadas