我在R代碼中製作C。傳遞種子/在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")
感謝。
One liner!真的很強大! – agstudy
是的,雖然'cppFunction()'在幕後做了一些魔術來使這條線生效 - 它確實得到了擴展。但是對於我們來說,它非常接近魔法;-) –
但是我最好是使用sourceCpp(至少用於調試目的)? – agstudy