Beispiel #1
0
    Eigen::VectorXd sample(const Uniform &d, RNG &rng)
    {
      std::uniform_real_distribution<double> dist(0, 1);

      Eigen::ArrayXd sample(length(d));
      for (Eigen::ArrayXd::Index i = 0; i < sample.rows(); i++)
      {
        sample(i) = dist(rng);
      }

      // Transform the output to fit within the support of the distribution
      return d.min().array() + sample * (d.max() - d.min()).array();
    }
Beispiel #2
0
 Eigen::VectorXd var(const Uniform &d)
 {
   return 1.0 / 12.0 * (d.max() - d.min());
 }
Beispiel #3
0
 bool insupport(const Uniform &d, const Eigen::VectorXd &x)
 {
   // Check that all dimensions are within the bounds of the distribution.
   return ((d.min().array() < x.array()) && (x.array() < d.max().array())).all();
 }
Beispiel #4
0
 Eigen::VectorXd mean(const Uniform &d)
 {
   return 0.5 * (d.min() + d.max());
 }