特征模板库Random()方法算法

时间:2015-06-15 10:05:15

标签: c++ random eigen

有谁知道,C ++的特征库在方法Random()中使用哪种算法:

eigen - random() doc

如果eigen将此决定传递给编译器(使用其标准方法创建伪随机数),那么我想知道g ++(gcc49 4.9.2_2)使用哪种算法作为默认值。

非常感谢任何有用的提示。

1 个答案:

答案 0 :(得分:3)

正如Paul R所指出的那样,默认是只调用rand。如果您查看Eigen / src / Core / MathFunctions.h,您将找到默认值:

template<typename Scalar>
struct random_default_impl<Scalar, false, false>
{
  static inline Scalar run(const Scalar& x, const Scalar& y)
  {
    return x + (y-x) * Scalar(std::rand()) / Scalar(RAND_MAX);
  }
  static inline Scalar run()
  {
    return run(Scalar(NumTraits<Scalar>::IsSigned ? -1 : 0), Scalar(1));
  }
};

或主题的变体(针对不同的变量类型)。