7template<
class Derived,
typename std::enable_if_t<
8 std::is_convertible_v<Derived, OperatorSpaceBase<Derived>> >* =
nullptr>
11 using Scalar =
typename Derived::Scalar;
12 using RealScalar =
typename Eigen::NumTraits<typename Derived::Scalar>::Real;
17 mutable unsigned long long count;
86 Eigen::VectorXd coeff;
87 coeff = coeff.NullaryExpr(
m_opSpace.dim(), [&]() { return Gaussian(mt); });
90 Eigen::MatrixX<Scalar> sample
94 for(
auto j = 0; j <
m_opSpace.dim(); ++j) { sample += coeff(j) *
m_opSpace.basisOp(j); }
Definition RandomMatrix.hpp:9
std::mt19937 mt
Definition RandomMatrix.hpp:15
typename Derived::Scalar Scalar
Definition RandomMatrix.hpp:11
Derived m_opSpace
Definition RandomMatrix.hpp:13
unsigned long long count
Definition RandomMatrix.hpp:17
Eigen::MatrixX< Scalar > operator()()
Generates an instance of a random matrix.
Definition RandomMatrix.hpp:85
void reset()
Definition RandomMatrix.hpp:69
int m_seed
Definition RandomMatrix.hpp:14
GaussianRandomMatrixGenerator(GaussianRandomMatrixGenerator const &other)=delete
Copy constructor.
~GaussianRandomMatrixGenerator()=default
Destructor.
__host__ __device__ GaussianRandomMatrixGenerator & operator=(GaussianRandomMatrixGenerator &&other)=default
Move assignment operator.
GaussianRandomMatrixGenerator(GaussianRandomMatrixGenerator &&other)=default
Move constructor.
typename Eigen::NumTraits< typename Derived::Scalar >::Real RealScalar
Definition RandomMatrix.hpp:12
__host__ __device__ GaussianRandomMatrixGenerator & operator=(GaussianRandomMatrixGenerator const &other)=delete
Copy assignment operator.
GaussianRandomMatrixGenerator()=default
Default constructor.
void discard(unsigned long long num)
Discards random numbers to advance internal states of the random number generator.
Definition RandomMatrix.hpp:76
std::normal_distribution< double > Gaussian
Definition RandomMatrix.hpp:16
GaussianRandomMatrixGenerator(Derived const &opSpace, int seed=0, RealScalar stddev=1.0)
Definition RandomMatrix.hpp:20