Sto creando C nei codici R.Passaggio di seme/Impostazione di seme/C nel codice R
Nel mio codice C sto usando la funzione rand() per generare un numero casuale. R-ext.pdf dice che devo impostare un seme usando i comandi;
GetRNGstate();
PutRNGstate();
Anche se sto usando questi comandi sopra, sto ancora ottenendo valori diversi per lo stesso seme. Potresti darmi un aiuto?
L'esempio è minima:
In C:
# include <R.h>
# include <Rinternals.h>
# include <Rmath.h>
# include <R_ext/Linpack.h>
SEXP example(){
SEXP output;
GetRNGstate();
PROTECT(output = allocVector(INTSXP, 1));
INTEGER(output)[0] = rand() % 50;
PutRNGstate();
UNPROTECT(1);
return(output);
}
In R:
dyn.load("example.so")
## The following codes return different values at ever run
set.seed(1)
.Call("example")
Grazie in anticipo.
Una fodera! davvero potente! – agstudy
Sì, anche se il 'cppFunction()' fa un po 'di magia dietro le quinte per far funzionare quella linea - si espande. Ma per noi da usare, è abbastanza vicino alla magia ;-) –
Ma io è meglio usare sourceCpp (almeno per scopi di debug)? – agstudy