File: rmultinom.cpp

package info (click to toggle)
r-cran-rcpparmadillo 14.6.0-1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 8,436 kB
  • sloc: cpp: 134,812; sh: 22; makefile: 2
file content (19 lines) | stat: -rw-r--r-- 615 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// [[Rcpp::depends(RcppArmadillo)]]
#include <RcppArmadilloExtensions/rmultinom.h>
#include <RcppArmadilloExtensions/fixprob.h>

using namespace Rcpp;

// [[Rcpp::export]]
IntegerVector rmultinomC(int n, int size, NumericVector prob) {
    IntegerMatrix draws(prob.size(), n);
    // FixProb modifies in-place
    arma::colvec fixprob(prob.begin(), prob.size()); // forced copy
    RcppArmadillo::FixProb(fixprob, 1, true);
    NumericVector newprob(Rcpp::wrap(fixprob));
    RNGScope scope;
    for (int ii=0; ii<n; ii++) {
        draws(_, ii) = RcppArmadillo::rmultinom(size, newprob);
    }
    return draws;
}