2011-10-26 36 views
6

Tôi muốn khởi tạo boost::random::discrete_distribution với số std::vector<double>.Làm thế nào để khởi tạo boost :: random :: discrete_distribution sử dụng std :: vector?

Vấn đề của tôi là nếu tôi khởi tạo nó với một mảng, như trong ví dụ chính thức:

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

sau đó nó hoạt động hoàn hảo.

Tuy nhiên, nếu tôi khởi tạo nó bằng std::vector, thì nó hoạt động như thể nó chỉ có một phần tử có xác suất 1.0.

Bạn có thể cho tôi biết cách khởi tạo boost::random::discrete_distribution<> đúng cách với véc tơ không?

Trả lời

10

Lớp học dường như có một hàm tạo là takes an iterator range. Điều này sẽ được sử dụng với vectơ như sau:

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

bạn có biết cách giải quyết vấn đề này không? [link] (https://stackoverflow.com/questions/48013802/how-to-set-a-vector-of-discrete-distribution-c) Nó gần như giống nhau, nhưng với một vectơ phân phối. –

Các vấn đề liên quan