私はRコード内でCを作っています。
私のCコードでは、rand()関数を使用して乱数を生成しています。R-ext.pdfには、コマンドを使用してシードを設定する必要があると書かれています。
GetRNGstate();
PutRNGstate();
上記のコマンドを使用していますが、同じシードに対して異なる値を取得しています。何か助けてもらえますか?
最小の例は次のとおりです。
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);
}
Rの場合:
dyn.load("example.so")
## The following codes return different values at ever run
set.seed(1)
.Call("example")
前もって感謝します。