2011-10-26 9 views
6

Chciałbym zainicjować boost::random::discrete_distribution z std::vector<double>.Jak zainicjować boost :: random :: discrete_distribution przy użyciu std :: vector?

Moim problemem jest to, że gdybym go zainicjować z tablicy, jak w oficjalnym przykład:

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

to działa idealnie.

Jednak jeśli zainicjuję go przy pomocy std::vector, zachowuje się tak, jakby miał tylko jeden element z prawdopodobieństwem 1.0.

Czy możesz mi powiedzieć, jaki jest właściwy sposób inicjowania boost::random::discrete_distribution<> z wektorem?

Odpowiedz

10

Klasa wydaje się mieć konstruktora, który takes an iterator range. To byłoby używane z takim wektorem:

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

Czy wiesz, jak rozwiązać ten problem? [link] (https://stackoverflow.com/questions/48013802/how-to-set-a-vector-of-discrete-distribution-c) Jest prawie taki sam, ale z wektorem dystrybucji. –

Powiązane problemy