Vectorised Rcpp zufällige Binomial Draws

Dies ist eine Folgefrage von dieser:Generierung der gleichen Zufallsvariablen in Rcpp und R

Ich versuche, einen vektorisierten Aufruf von rbinom dieser Form zu beschleunigen:

    x <- c(0.1,0.4,0.6,0.7,0.8)
    rbinom(length(x),1 ,x)

Im Live-Code von x handelt es sich um einen Vektor variabler Länge (in der Regel jedoch in Millionen). Ich habe keine Erfahrung mit Rcpp, aber ich habe mich gefragt, ob ich Rcpp verwenden kann, um dies zu beschleunigen. Aus der verknüpften Frage wurde dieser Rcpp-Code für nicht vektorisierte Rbinom-Aufrufe von @Dirk Eddelbuettel vorgeschlagen:

    cppFunction("NumericVector cpprbinom(int n, double size, double prob) { \
         return(rbinom(n, size, prob)); }")
    set.seed(42); cpprbinom(10, 1, 0.5)

.... und ist ungefähr doppelt so schnell wie die Nicht-Rcpp-Option, kann aber meine vektorisierte Version nicht verarbeiten

    cpprbinom(length(x), 1, x)

Wie kann der Rcpp-Code geändert werden, um dies zu implementieren?

Vielen Dan

Antworten auf die Frage(4)

Ihre Antwort auf die Frage