从犰狳向量生成随机索引

Generate random index from Armadillo vector

我希望从给定的犰狳向量生成随机索引(使用 R 的 Rcpp 接口)。我使用的函数如下:

#include <RcppArmadillo.h>
#include <RcppArmadilloExtensions/sample.h>

using namespace Rcpp;

// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::plugins(cpp11)]] 

// [[Rcpp::export]]
int index_rand(arma::vec& v) {

  arma::uvec indices; 

  for (size_t i = 0; i < v.n_elem; ++i) {

    indices[i] = i;

  }

  arma::uvec u = RcppArmadillo::sample(indices, 1, false);
  return u[0];
}

但是,此代码符合要求,但在 运行:

时会导致 R 解释器崩溃
index_rand(1:10)

事实证明这是一个棘手的问题已解决 。为后人解答如下

// [[Rcpp::export]]
int index_rand(arma::vec& v) {

  arma::uvec indices = arma::linspace<arma::uvec>(0, v.n_elem-1, v.n_elem); 

  arma::uvec u = RcppArmadillo::sample(indices, 1, false);
  return (int)u[0];
}