我在 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")
提前致谢。