2016-07-13 17 views
0

Ich habe eine Reihe von Gewichtungen in einem Eigen::VectorXd und würde gerne Stichproben aus dem Bereich der Indizes mit diesen Werten sind Wahrscheinlichkeiten. Wenn weights ein std::vector ist, kann ich dies tun:Probe von diskrete Verteilung mit Gewichten in Eigenen Vektor

std::random_device rd; 
std::mt19937 rng(rd()); 
std::discrete_distribution<int> dist(weights.begin(), weights.end()); 
int val = dist(rng); 

Was ist der beste Weg, dies zu tun, wenn weights ein Eigen::VectorXd ist? Kann es gemacht werden, ohne den Vektor zu kopieren und ohne den Sampler selbst zu schreiben?

Antwort

1

könnten Sie Zeiger verwenden für Eigen::VectorXd

std::discrete_distribution<int> dist(weights.data(), weights.data()+weights.size()); 
+0

Das in den Daten führen nicht direkt kopiert werden? – Flash

+0

Welche Daten? Gewichte? Nein. – kangshiyin