まぃふぇいばりっと

機械学習やってます.Julia大好きです.勉強したことの殴り書きです.

C++ eigenでランダム行列を作る

最小値LOから最大値HIの値を一様にとる連続分布で,N×Nの行列を作る方法.

#include <Eigen/Dense>
#include <iostream>
#include <cmath>

using namespace Eigen;
using namespace std;

MatrixXd random_uniform_mtx(int N, double LO, double HI){
    double range = HI - LO ;

    MatrixXd P = MatrixXd::Random(N, N);
    P = (P + MatrixXd::Constant(N, N, HI))*range/2;
    P = (P + MatrixXd::Constant(N, N, LO));

    return P;
}

Stack Overflow で見かけたコードだった気がするが,ぐぐっても見当たらなくなっていた...