2011-10-26 8 views
6

Vorrei inizializzare boost::random::discrete_distribution con un std::vector<double>.Come inizializzare boost :: random :: discrete_distribution usando std :: vector?

Il mio problema è che se inizializzare con una matrice, come nell'esempio ufficiale:

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

allora funziona perfettamente.

Tuttavia, se lo inizializzo con un std::vector, si comporta come se avesse un solo elemento con probabilità 1.0.

Puoi dirmi qual è il modo giusto di inizializzare uno boost::random::discrete_distribution<> con un vettore?

risposta

10

La classe sembra avere un costruttore che takes an iterator range. Questo sarebbe usato con un vettore come questo:

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

sai come risolvere questo? [collegamento] (https://stackoverflow.com/questions/48013802/how-to-set-a-vector-of-discrete-distribution-c) È quasi lo stesso, ma con un vettore di distribuzioni. –

Problemi correlati