mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-14 20:56:00 +08:00
Add an example showing how to use C++11 random distributions
This commit is contained in:
parent
ac409f51f1
commit
92190a1caf
@ -138,6 +138,9 @@ DenseBase<Derived>::NullaryExpr(Index rows, Index cols, const CustomNullaryOp& f
|
|||||||
*
|
*
|
||||||
* The template parameter \a CustomNullaryOp is the type of the functor.
|
* The template parameter \a CustomNullaryOp is the type of the functor.
|
||||||
*
|
*
|
||||||
|
* Here is an example with C++11 random generators: \include random_cpp11.cpp
|
||||||
|
* Output: \verbinclude random_cpp11.out
|
||||||
|
*
|
||||||
* \sa class CwiseNullaryOp
|
* \sa class CwiseNullaryOp
|
||||||
*/
|
*/
|
||||||
template<typename Derived>
|
template<typename Derived>
|
||||||
|
@ -48,6 +48,8 @@ struct functor_traits<scalar_random_op<Scalar> >
|
|||||||
* a temporary matrix whenever it is nested in a larger expression. This prevents unexpected
|
* a temporary matrix whenever it is nested in a larger expression. This prevents unexpected
|
||||||
* behavior with expressions involving random matrices.
|
* behavior with expressions involving random matrices.
|
||||||
*
|
*
|
||||||
|
* See DenseBase::NullaryExpr(Index, const CustomNullaryOp&) for an example using C++11 random generators.
|
||||||
|
*
|
||||||
* \sa DenseBase::setRandom(), DenseBase::Random(Index), DenseBase::Random()
|
* \sa DenseBase::setRandom(), DenseBase::Random(Index), DenseBase::Random()
|
||||||
*/
|
*/
|
||||||
template<typename Derived>
|
template<typename Derived>
|
||||||
|
@ -19,3 +19,22 @@ if(QT4_FOUND)
|
|||||||
|
|
||||||
add_dependencies(all_examples Tutorial_sparse_example)
|
add_dependencies(all_examples Tutorial_sparse_example)
|
||||||
endif(QT4_FOUND)
|
endif(QT4_FOUND)
|
||||||
|
|
||||||
|
check_cxx_compiler_flag("-std=c++11" EIGEN_COMPILER_SUPPORT_CPP11)
|
||||||
|
if(EIGEN_COMPILER_SUPPORT_CPP11)
|
||||||
|
add_executable(random_cpp11 random_cpp11.cpp)
|
||||||
|
target_link_libraries(random_cpp11 ${EIGEN_STANDARD_LIBRARIES_TO_LINK_TO})
|
||||||
|
add_dependencies(all_examples random_cpp11)
|
||||||
|
ei_add_target_property(random_cpp11 COMPILE_FLAGS "-std=c++11")
|
||||||
|
|
||||||
|
get_target_property(random_cpp11_exec
|
||||||
|
random_cpp11 LOCATION)
|
||||||
|
add_custom_command(
|
||||||
|
TARGET random_cpp11
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND ${random_cpp11_exec}
|
||||||
|
ARGS >${CMAKE_CURRENT_BINARY_DIR}/random_cpp11.out
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
endif()
|
14
doc/special_examples/random_cpp11.cpp
Normal file
14
doc/special_examples/random_cpp11.cpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#include <Eigen/Core>
|
||||||
|
#include <iostream>
|
||||||
|
#include <random>
|
||||||
|
|
||||||
|
using namespace Eigen;
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
std::default_random_engine generator;
|
||||||
|
std::poisson_distribution<int> distribution(4.1);
|
||||||
|
auto poisson = [&] (int) {return distribution(generator);};
|
||||||
|
|
||||||
|
RowVectorXi v = RowVectorXi::NullaryExpr(10, poisson );
|
||||||
|
std::cout << v << "\n";
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user