create common PRNG object in DiscreteConditional
parent
7c53ca3491
commit
6527437c67
|
@ -32,6 +32,9 @@
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
// In wrappers we can access std::mt19937_64 via gtsam.MT19937
|
||||||
|
static std::mt19937_64 kRandomNumberGenerator(2);
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using std::pair;
|
using std::pair;
|
||||||
using std::stringstream;
|
using std::stringstream;
|
||||||
|
@ -287,8 +290,6 @@ void DiscreteConditional::sampleInPlace(DiscreteValues* values) const {
|
||||||
|
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
size_t DiscreteConditional::sample(const DiscreteValues& parentsValues) const {
|
size_t DiscreteConditional::sample(const DiscreteValues& parentsValues) const {
|
||||||
static mt19937 rng(2); // random number generator
|
|
||||||
|
|
||||||
// Get the correct conditional distribution
|
// Get the correct conditional distribution
|
||||||
ADT pFS = choose(parentsValues, true); // P(F|S=parentsValues)
|
ADT pFS = choose(parentsValues, true); // P(F|S=parentsValues)
|
||||||
|
|
||||||
|
@ -310,7 +311,7 @@ size_t DiscreteConditional::sample(const DiscreteValues& parentsValues) const {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
std::discrete_distribution<size_t> distribution(p.begin(), p.end());
|
std::discrete_distribution<size_t> distribution(p.begin(), p.end());
|
||||||
return distribution(rng);
|
return distribution(kRandomNumberGenerator);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
Loading…
Reference in New Issue