Je fais C dans les codes R.Transfert de semences/Définition de semences/C dans le code R
Dans mon code C, j'utilise la fonction rand() pour générer un nombre aléatoire. Le R-ext.pdf dit que je dois définir une graine en utilisant les commandes; Bien que j'utilise ces commandes ci-dessus, je reçois toujours des valeurs différentes pour la même graine. Pourriez-vous me donner de l'aide?
L'exemple minimum est:
En 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);
}
En R:
dyn.load("example.so")
## The following codes return different values at ever run
set.seed(1)
.Call("example")
Merci à l'avance.
Une doublure! vraiment puissant! – agstudy
Oui, bien que 'cppFunction()' fasse un peu de magie derrière les scènes pour que cette ligne fonctionne - elle est étendue. Mais pour nous d'utiliser, il est assez proche de la magie ;-) –
Mais est-il préférable d'utiliser sourceCpp (au moins à des fins de débogage)? – agstudy